2012-12-07 48 views
2

比方说,我有一个名为“服务器”节点,它会生成一个名为“server1的”这样的过程:连接到一个进程催生了另一个节点上

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

我怎么能发送消息为“Server1”从一个名为“user”的不同节点?

使用net_adm我只能ping通节点“服务器”,但不能生成节点“server1”。我想有一个问题,我如何启动服务器,即

erl -sname server 
现在

如果另一台机器上我做

erl -sname user 
net_adm:ping('[email protected]') 
从“用户@ PC”

我可以连接到它,但如果我做

erl -sname user 
net_adm:ping('[email protected]') 

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

回答

6

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 
+0

完美,谢谢! – user1301428

相关问题