如何与一个Erlang节点中的特定进程通信?

时间:2014-04-21 07:29:20

标签: java erlang messages jinterface

我有一个Erlang服务器,它为每个连接的客户端生成一个新进程。然后将此新进程的Pid传递给客户端(以建立与新进程的连接。)这是否足以从jinterface客户端建立连接?

我首先使用它来连接客户端:

final String SERVERNAME = "server";
final String SERVERNODE = "bertil@computer";

mbox.send(SERVERNAME,SERVERNODE,connectClient);

这些名称在启动时在服务器中设置:

start() ->
    net_kernel:start([bertil, shortnames]),
    register(server, self()).

我是否必须为每个衍生过程注册一个新名称?那不会那么动态......我该如何解决这个问题?我应该将服务器上的主进程用作路由器来发送所有流量吗?

1 个答案:

答案 0 :(得分:0)

一旦你有了pid,你应该能够直接向它发送消息。在Erlang中,如果你有一个pid,你不必指定一个节点。如果要发送到已注册的名称,则只需要一个节点,因为每个节点的名称只是唯一的。 Pids在整个集群中是独一无二的。

如果你有一个my_pid作为OtpErlangPid对象,你可以像这样发送:

 mbox.send(my_pid, message);

请参阅Jinterface用户指南中send function1.6 Sending and Receiving Messages章节的文档。