gpt4 book ai didi

erlang - 如何向另一个节点发送消息?

转载 作者:行者123 更新时间:2023-12-03 02:52:11 26 4
gpt4 key购买 nike

我想实现一个简单的聊天室,其中两个节点可以同步向对方发送消息。没有充当服务器角色的节点。

如果我通过 spawn(Node,Module,Fun,Args) 函数获得该节点上进程的 pid,我可以使用 ! 向另一个节点发送消息吗

最佳答案

您可以发送到另一个节点上的进程,就像发送到同一节点本地进程一样。当然,诀窍是你需要有进程 ID。但是您也可以使用元组 {RegisteredName, NodeName} 发送到在另一个节点注册的进程,例如

register(a, self()), {a, node()} ! foo.

将向自己发送一条消息。相同的语法适用于跨节点。

更详细的示例

在第一个 shell 中:

erl -sname one
Erlang R15B01 (erts-5.9.1) [source] [smp:8:8] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.9.1 (abort with ^G)
one@grannysmith)1> (one@grannysmith)1> register(hello_server, self()).
(one@grannysmith)2>
true

在第二个 shell 中:

erl -sname two
Erlang R15B01 (erts-5.9.1) [source] [smp:8:8] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.9.1 (abort with ^G)
two@grannysmith)1> (one@grannysmith)1> {hello_server, 'one@grannysmith'} ! good_day.
good_day
(two@grannysmith)2>

再次在第一个 shell 中:

(one@grannysmith)2> flush().
Shell got good_day
ok

关于erlang - 如何向另一个节点发送消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16913436/

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