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

标签 java erlang message 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()).

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

最佳答案

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

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

 mbox.send(my_pid, message);

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

关于java - 如何与一个 Erlang 节点中的特定进程进行通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23192937/

相关文章:

java - 在已释放资源后使用 .share() 订阅修改后的可观察对象

Erlang模块编译

module - Erlang:包含模块和调用函数

erlang - 在Erlang中使用大量的尾递归是否会减慢它的速度?

WCF 消息记录 - 使用 XPath 查询添加过滤器

delphi - COM接口(interface)总是用 "catastrophic failure"屏蔽异常消息

java - 在JAVA中向列表中的每个对象添加完整的对象列表

java - 在 Linux 启动时启动 Java jar 文件

c# - 发送和接收 UDP 数据包

java - 如何在 Spring MVC 中处理 RESTful 删除