在erlang中,不同网络中的两个节点可以相互通信吗?
我知道,当两个erlang节点具有相同的cookie文件时,它们可以相互通信。我已经在我的局域网上进行了测试。但我想知道,当这两个节点位于两个不同的网络中时,这种通信是否可行?在erlang中,不同网络中的两个节点可以相互通信吗?,erlang,Erlang,我知道,当两个erlang节点具有相同的cookie文件时,它们可以相互通信。我已经在我的局域网上进行了测试。但我想知道,当这两个节点位于两个不同的网络中时,这种通信是否可行? 如果是,我们将如何命名这两个节点???只要没有防火墙阻止通信,这就可以了。您需要访问epmd的端口4399,以及Erlang节点选择的端口。后者的范围可以使用inet\u dist\u listen\u min和inet\u dist\u listen\u max内核参数来选择 启动节点时,使用-name而不是-snam
如果是,我们将如何命名这两个节点???只要没有防火墙阻止通信,这就可以了。您需要访问epmd的端口4399,以及Erlang节点选择的端口。后者的范围可以使用
inet\u dist\u listen\u min
和inet\u dist\u listen\u max
内核参数来选择
启动节点时,使用-name
而不是-sname
来指定名称。区别在于-name
使用完全限定的主机名或IP地址,而-sname
使用本地主机名
您可以只给出一个节点名,例如-name mynode
,在这种情况下,Erlang节点将尝试找出要使用的主机名,或者您可以明确给出主机名,例如-namemynode@myhost.example.com
或-名称mynode@10.2.3.4
。如果使用主机名,则所有节点都需要能够通过/etc/hosts
或DNS解析主机名
因此,启动节点的命令如下所示:
erl -name mynode@10.2.3.4 -kernel inet_dist_listen_min 42000 inet_dist_listen_max 43000