如何将消息从Java发送到Erlang?

wqnecbli  于 2022-12-16  发布在  Erlang
关注(0)|答案(3)|浏览(238)

我正在用Erlang编写一个应用程序,用Java编写一个GUI,我已经设法在两种语言之间建立了一个连接,但是现在我需要(我猜)每次我按下一个按钮时,从Java向Erlang发送一条消息。
这是正确的方式去吗?
这样的信息看起来会是什么样子?
我已经找到了一些关于这种集成形式的好网站,但我觉得我没有得到一切。
http://www.trapexit.org/How_to_communicate_java_and_erlang

bihw5rsg

bihw5rsg1#

除了通过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并不是那么糟糕,tho..(这里是官方文档:http://www.erlang.org/doc/apps/jinterface/jinterface_users_guide.html

gmol1639

gmol16392#

如果jinterface太复杂,可以只在open_port上使用packet选项,然后使用

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}]).

如果你需要更大的数据包,使用{packet,2}或{packet,4}并修改java。在数据包内部,你可以在两端运行任何你喜欢的协议。

kninwzqo

kninwzqo3#

我正在开发一个与您类似的应用程序:C++ GUI和Erlang服务器。我使用TCP套接字在GUI和服务器之间交换消息,使用Erlang服务器模式处理请求(我可能同时有多个GUI挂接到服务器)。

相关问题