3

「server」というノードがあり、次のように「server1」という名前のプロセスを生成するとします。

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

「user」という名前の別のノードから「server1」にメッセージを送信するにはどうすればよいですか?

net_admを使用すると、ノード「server」にのみpingを実行でき、生成されたノード「server1」にはpingを実行できません。サーバーの起動方法に問題があると思います。

erl -sname server

今、別のマシンで私がするなら

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

「user@pc」から接続できますが、接続すると接続できます

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

ノードに到達できないことを通知します。「server1」への接続に使用する別の構文はありますか?

4

1 に答える 1

7

net_adm:pingは、リモートerlangノードで実行されているプロセスではなく、リモートerlangノードにpingを実行するために使用されます。リモートプロセスにメッセージを送信するために、ローカルではなくグローバルに登録できます。

サーバーノード:

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

次に、ユーザーノードで:

global:send(server1, test).

サーバーノードでの出力:

Received test
于 2012-12-07T11:27:15.757 に答える