作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想实现一个简单的聊天室,其中两个节点可以同步向对方发送消息。没有充当服务器角色的节点。
如果我通过 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/
我是一名优秀的程序员,十分优秀!