【问题标题】:How do I communicate with a specific process in one Erlang node?如何与一个 Erlang 节点中的特定进程通信?
【发布时间】:2014-06-05 06:06:27
【问题描述】:

我有一个 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()).

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

【问题讨论】:

    标签: java erlang messages jinterface


    【解决方案1】:

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

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

     mbox.send(my_pid, message);
    

    请参阅 Jinterface 用户指南中的 send function 和章节 1.6 Sending and Receiving Messages 的文档。

    【讨论】:

      猜你喜欢
      • 2012-11-21
      • 2022-10-03
      • 1970-01-01
      • 2012-11-25
      • 2018-05-11
      • 2017-08-07
      • 1970-01-01
      • 2022-01-25
      • 2019-10-27
      相关资源
      最近更新 更多