概述
erlang node study
本地注册
1 | werl -name 'fries@127.0.0.1' |
不连接 直接给在本地注册名字的节点发消息
此时两个节点的cookie是一样的
1 | erlang:get_cookie(). |
1.可以用一个一模一样的名字在本地和全局同时注册
2.!操作符传注册名的话只能收到本地注册名的消息
3.上面可以收到消息是因为在本地注册了uzi erlang:register(uzi,self())
4.如果 不在本地注册uzi只全局注册global:register_name(uzi, self()).
这样在K节点向F节点发送消息F节点是收不到的,如果只想向一个全局注册的名字进程发送消息需要
取到pid比如global:whereis_name(uzi) ! {hello_global,from_fries,self()}.
给K节点发
1 | {uzi,'ketchup@127.0.0.1'} ! {hello_ketchup,from_fries,self()}. |
也可以收到消息
连接后直接给在本地注册名字的节点发消息 这个就不试了
此时两个节点的cookie是一样的
因为发送完消息以后就 连接在一起了,个人猜测在发消息之前节点自动执行了
1 | net_adm:ping('fries@127.0.0.1'). |
global注册
ketchup节点在不知道fries节点的node_name
可以通过fries节点全局注册的global_name给fries节点发消息
fries节点 通过 ketchup节点node_name给ketchup节点发送消息
所有的操作都需要两个节点连在一起