JavaからErlangメッセージ
-
29-09-2019 - |
質問
JavaにGUIを使用して、Erlangでアプリケーションを行っています。私はなんとか言語間の接続を確立することができましたが、今ではJavaから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が同時にサーバーに接続されている場合があります)。
所属していません StackOverflow