2010-11-09 18 views
6

Estoy haciendo una aplicación en Erlang, con una GUI en Java. He logrado establecer una conexión entre los idiomas, pero ahora necesito (supongo) que envíe un mensaje de Java a Erlang, cada vez que presiono un botón.Java to Erlang messages

¿Es ese el camino correcto?

¿Cómo se vería ese mensaje?

He encontrado algunos buenos sitios sobre esta forma de integración, pero siento que no estoy obteniendo todo.

http://www.trapexit.org/How_to_communicate_java_and_erlang

Respuesta

2

Si jinterface es demasiado complicado que sólo podría utilizar la opción de paquetes en open_port y utilizar

byte[] in_buf = new byte[256]; 
byte[] out_buf = new byte[256]; 
int in_count = System.in.read(); 
int offset = 0; 
do 
    { 
     int c = System.in.read (in_buf, offset, in_count-offset); 
     offset += c; 
    } 
while (offset < in_count); 

Para leer los paquetes de Erlang y el uso de escribir:

System.out.write(out_count); 
System.out.write(out_buf, 0, out_count); 

en el lado Erlang esto coincidiría con

open_port({spawn, "<path-to-java> -cp <classpath> your-java-prog", 
      [{packet, 1}]). 

Si necesita paquetes más grandes, use {paquete, 2} o {paquete, 4} y adapte el java. Dentro de los paquetes puede ejecutar cualquier protocolo que desee en ambos lados.

3

Además clásico de la comunicación a través de Java-Erlang OTP jinterface se puede investigar tales métodos como:

- thrift 
- ice from zeroC (no official erlang binding) 
- maybe two http servers on both sides (I like this approach) 
- protocol buffers (rather not, it is better for larger data transfers) 

Es necesario aprender la forma de su tráfico y elegir la mejor solución. Jinterface no es tan malo, aunque .. (aquí es doc oficial: http://www.erlang.org/doc/apps/jinterface/jinterface_users_guide.html)

+1

+1 para [Thrift] (http://thrift.apache.org/). –

+0

¡Cosas geniales! gracias – Handsken

+0

Me las arreglé para enviar mensajes de Erlang a Java y recibirlos con éxito. [Principalmente a partir de este ejemplo] [1]. Pero lo principal que estaba buscando era al revés. Enviando de Java a Erlang. Tengo algunas conjeturas de que tengo que devolver un mensaje al Pid que recibí de Erlang. [1]: http://pdincau.wordpress.com/2010/01/07/how-to-create-a-java-erlang-node-with-jinterface/ – Handsken

1

Estoy trabajando en una aplicación similar a la tuya: C++ GUI y servidor Erlang. Utilizo sockets TCP para intercambiar mensajes entre la GUI y el servidor, y los patrones del servidor Erlang para manejar las solicitudes (puedo tener más de una GUI conectada al servidor al mismo tiempo).