2010-11-09 30 views
6

Je fais une application dans Erlang, avec une interface graphique en Java. J'ai réussi à établir une connexion entre les langues, mais maintenant je dois (je suppose) envoyer un message de Java à Erlang, chaque fois que j'appuie sur un bouton.Messages Java à Erlang

Est-ce la bonne solution?

À quoi ressemblerait un tel message?

J'ai trouvé quelques bons sites sur cette forme d'intégration, mais j'ai l'impression de ne pas tout obtenir.

http://www.trapexit.org/How_to_communicate_java_and_erlang

Répondre

2

Si jinterface est trop compliqué, vous pourriez utiliser l'option de paquets sur open_port et utiliser

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

Pour lire les paquets de Erlang et d'écrire utilisation:

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

du côté Erlang cela correspond à

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

Si vous avez besoin de plus gros paquets, utilisez {paquet, 2} ou {paquet, 4} et adaptez le java. A l'intérieur des paquets, vous pouvez exécuter n'importe quel protocole des deux côtés.

3

En plus classique communication Java-Erlang via OTP jinterface vous pouvez rechercher ces méthodes comme:

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

Vous devez apprendre la forme de votre trafic et choisir la meilleure solution. Jinterface est pas si mal, quoique .. (ici est officiel doc: http://www.erlang.org/doc/apps/jinterface/jinterface_users_guide.html)

+1

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

+0

De bonnes choses! merci – Handsken

+0

J'ai réussi à envoyer des messages d'Erlang à Java et à les recevoir avec succès. [Principalement tiré de cet exemple] [1]. Mais la chose principale que j'allais faire était l'inverse. Envoi de Java à Erlang. J'ai quelques suppositions que je dois retourner un message au Pid j'ai eu d'Erlang. [1]: http://pdincau.wordpress.com/2010/01/07/how-to-create-a-java-erlang-node-with-jinterface/ – Handsken

1

Je travaille sur une application similaire à la vôtre: GUI C++ et serveur Erlang. J'utilise des sockets TCP pour échanger des messages entre l'interface graphique et le serveur, et des modèles de serveur Erlang pour gérer les demandes (il se peut que plusieurs interfaces graphiques soient connectées au serveur en même temps).