我正在Erlang申请,并在Java上有GUI。我已经设法在语言之间建立了连接,但是现在我需要(我想)每次按下按钮时(每次按下一个按钮)将消息从Java发送到Erlang。

这是正确的方法吗?

这样的消息看起来如何?

我发现了一些关于这种整合形式的好网站,但是我觉得我没有得到一切。

http://www.trapexit.org/how_to_communicate_java_and_erlang

有帮助吗?

解决方案

如果Jinterface太复杂

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

在Erlang一侧,这将与

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

如果您需要较大的数据包,请使用{数据包,2}或{Packet,4}并调整Java。在数据包中,您可以在双方运行您喜欢的任何协议。

其他提示

除了经典的Java-erlang通过OTP Jinterface进行交流,您还可以研究以下方法:

 - 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服务器。我使用TCP插座在GUI和服务器之间交换消息,以及用于处理请求的ERLANG服务器模式(我可能同时将一个以上的GUI连接到服务器)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top