質問

JavaにGUIを使用して、Erlangでアプリケーションを行っています。私はなんとか言語間の接続を確立することができましたが、今ではJavaからErlangにメッセージを送信する必要があります。

それは正しい方法ですか?

そのようなメッセージはどのように見えますか?

この形式の統合についていくつかの良いサイトを見つけましたが、私はすべてを手に入れていないように感じます。

http://www.trapexit.org/how_to_communicate_java_and_erlang

役に立ちましたか?

解決

Jinterfaceが複雑すぎる場合は、open_portでパケットオプションを使用して使用する場合があります

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

Erlangのパケットを読み、使用を書くには:

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

エルラン側では、これは一致します

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

大きなパケットが必要な場合は、{packet、2}または{packet、4}を使用し、Javaを適応させます。パケット内では、両側で好きなプロトコルを実行できます。

他のヒント

OTP Jinterfaceを介したクラシックJava-Erlangコミュニケーションに加えて、次のような方法を調査できます。

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

トラフィックの形状を学び、最適なソリューションを選択する必要があります。 Jinterfaceはそれほど悪くはありません。 http://www.erlang.org/doc/apps/jinterface/jinterface_users_guide.html)

私はあなたのアプリケーションに似たアプリケーションに取り組んでいます:C ++ GUIおよびErlang Server。 TCPソケットを使用してGUIとサーバー間のメッセージを交換し、リクエストを処理するためにErlangサーバーパターンを交換します(複数のGUIが同時にサーバーに接続されている場合があります)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top