gpt4 book ai didi

erlang - 连接到另一个节点上生成的进程

转载 作者:行者123 更新时间:2023-12-02 03:30:39 24 4
gpt4 key购买 nike

假设我有一个名为“server”的节点,它会生成一个名为“server1”的进程,如下所示:

register(server1,spawn(module, generate_new_server, []))

如何从名为“user”的不同节点向“server1”发送消息?

使用 net_adm 我只能 ping 节点“server”,但不能 ping 通生成的节点“server1”。我猜我启动服务器的方式有问题,即

erl -sname server

现在如果在另一台机器上我会这样做

erl -sname user
net_adm:ping('server@pc')

从“user@pc”我可以连接到它,但如果我这样做

erl -sname user
net_adm:ping('server1@pc')

它告诉我无法到达该节点。是否有不同的语法用于连接到“server1”?

最佳答案

net_adm:ping 用于 ping 远程 erlang 节点,而不是该节点上运行的进程。为了向远程进程发送消息,您可以全局注册而不是本地注册:

在服务器节点上:

 global:register_name(server1,spawn(fun() -> receive X -> io:format("Received ~p~n", [X]) end end)).

然后在用户节点上:

global:send(server1, test).

服务器节点上的输出:

Received test

关于erlang - 连接到另一个节点上生成的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13761969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com