Question

Je fais une demande en 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 je appuyer sur un bouton par exemple.

Est-ce la bonne façon de procéder?

Comment un tel look message?

Je l'ai trouvé quelques bons sites sur cette forme d'intégration, mais je me sens comme je ne suis pas obtenir tout.

http://www.trapexit.org/How_to_communicate_java_and_erlang

Était-ce utile?

La solution

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

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 à l'utilisation d'écriture:

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 d'utiliser de grandes paquets {paquet, 2} ou {paquet, 4} et d'adapter le java. vous pouvez exécuter à l'intérieur des paquets quel que soit le protocole que vous voulez sur les deux côtés.

Autres conseils

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 .. (voici doc officiel: http: // www.erlang.org/doc/apps/jinterface/jinterface_users_guide.html )

Je travaille sur une application similaire à la vôtre: GUI C ++ et le serveur Erlang. J'utilise les sockets TCP pour échanger des messages entre l'interface et le serveur, et les modèles de serveur Erlang pour le traitement des demandes (je peux avoir plus d'une interface graphique relié au serveur en même temps).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top