Java到Erlang消息

Java到Erlang消息,erlang,integration,otp,jinterface,Erlang,Integration,Otp,Jinterface,我正在用Erlang做一个应用程序,用Java做一个GUI。 我已经成功地在to语言之间建立了连接,但是现在我需要(我猜)在每次按下按钮时从Java向Erlang发送一条消息 这样做对吗 这样的信息看起来如何 我已经找到了一些关于这种整合形式的好网站,但我觉得我并不是什么都懂 除了通过OTP jinterface进行的经典Java Erlang通信外,您还可以研究以下方法: - thrift - ice from zeroC (no official erlang binding) - m

我正在用Erlang做一个应用程序,用Java做一个GUI。 我已经成功地在to语言之间建立了连接,但是现在我需要(我猜)在每次按下按钮时从Java向Erlang发送一条消息

这样做对吗

这样的信息看起来如何

我已经找到了一些关于这种整合形式的好网站,但我觉得我并不是什么都懂


除了通过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也没那么糟糕,尽管。。(这里是官方文件:)

如果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方面,这将与

open_port({spawn, "<path-to-java> -cp <classpath> your-java-prog", 
          [{packet, 1}]).
open_端口({spawn,“-cp您的java程序”,
[{数据包,1}])。
如果需要较大的数据包,请使用{packet,2}或{packet,4}并调整java。
在包中,你可以运行两边都喜欢的协议。

< p>我正在使用类似于你的应用程序:C++ GUI和Erlang服务器。我使用TCP套接字在GUI和服务器之间交换消息,以及处理请求的Erlang服务器模式(我可以同时拥有多个GUI)。.

我成功地将消息从Erlang发送到Java并接收它们。[主要来自此示例][1]。但我的主要目的是反过来。从Java发送到Erlang。我猜我必须将消息返回到从Erlang获得的Pid。[1]:
open_port({spawn, "<path-to-java> -cp <classpath> your-java-prog", 
          [{packet, 1}]).