2012-12-07 2 views
2

의 내가 이런 "서버 1"이라는 프로세스를 생성합니다 "서버"라는 노드 있다고 가정 해 봅시다 : 어떻게 메시지를 보낼 수 있습니다연결이 다른 노드에서 양산

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

을에 "서버 1" "user"라는 다른 노드에서?

net_adm을 사용하면 생성 된 노드 "server1"이 아니라 "server"노드에만 ping 할 수 있습니다. 내가 다른 컴퓨터에 내가 "사용자 @ PC를"에서

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

을 할 경우 문제가 즉, 내가 서버를 실행하는 방법을 지금

erl -sname server 

가 생각 나는 그것을 연결하지만, 경우 수 I do

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

노드에 연결할 수 없다고 알려줍니다. "server1"에 연결하는 데 사용할 다른 구문이 있습니까?

답변

6

net_adm : 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

관련 문제