2010-11-09 10 views
6

Sto creando un'applicazione in Erlang, con una GUI in Java. Sono riuscito a stabilire una connessione tra le lingue, ma ora ho bisogno di (credo) di inviare un messaggio da Java a Erlang, ogni volta che per esempio premere un pulsante.Java a messaggi di Erlang

È la strada giusta da percorrere?

Come apparirebbe un messaggio del genere?

Ho trovato alcuni buoni siti su questa forma di integrazione, ma mi sento come se non riuscissi a ottenere tutto.

http://www.trapexit.org/How_to_communicate_java_and_erlang

risposta

2

Se jinterface è troppo complicato si potrebbe anche utilizzare l'opzione pacchetto su open_port e utilizzare

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); 

Per leggere i pacchetti provenienti da erlang e di scrivere l'uso:

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

Sul lato erlang questo sarebbe partita con

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

Se hai bisogno di pacchetti più grandi usa {packet, 2} o {packet, 4} e adatta java. All'interno dei pacchetti è possibile eseguire qualsiasi protocollo che si desidera su entrambi i lati.

3

Oltre classico comunicazione Java-Erlang tramite jinterface OTP è possibile la ricerca di tali metodi come:

- 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) 

Hai bisogno di imparare la forma del vostro traffico e scegliere la soluzione migliore. Jinterface non è così male, tho .. (qui è doc ufficiale: http://www.erlang.org/doc/apps/jinterface/jinterface_users_guide.html)

+1

+1 per [Risparmio] (http://thrift.apache.org/). –

+0

Grandi cose! grazie – Handsken

+0

Sono riuscito a inviare messaggi da Erlang a Java e riceverli con successo. [Principalmente da questo esempio] [1]. Ma la cosa principale che stavo cercando era il contrario. Invio da Java a Erlang. Ho alcune ipotesi sul fatto che devo restituire un messaggio al Pid che ho ricevuto da Erlang. [1]: http://pdincau.wordpress.com/2010/01/07/how-to-create-a-java-erlang-node-with-jinterface/ – Handsken

1

Sto lavorando su un'applicazione simile alla tua: C++ GUI e server Erlang. Io uso i socket TCP per scambiare messaggi tra la GUI e il server e modelli di server Erlang per la gestione delle richieste (potrei avere più di una GUI collegata al server allo stesso tempo).