在erlang中,不同网络中的两个节点可以相互通信吗?

在erlang中,不同网络中的两个节点可以相互通信吗?,erlang,Erlang,我知道,当两个erlang节点具有相同的cookie文件时,它们可以相互通信。我已经在我的局域网上进行了测试。但我想知道,当这两个节点位于两个不同的网络中时,这种通信是否可行? 如果是,我们将如何命名这两个节点???只要没有防火墙阻止通信,这就可以了。您需要访问epmd的端口4399,以及Erlang节点选择的端口。后者的范围可以使用inet\u dist\u listen\u min和inet\u dist\u listen\u max内核参数来选择 启动节点时,使用-name而不是-snam

我知道,当两个erlang节点具有相同的cookie文件时,它们可以相互通信。我已经在我的局域网上进行了测试。但我想知道,当这两个节点位于两个不同的网络中时,这种通信是否可行?
如果是,我们将如何命名这两个节点???

只要没有防火墙阻止通信,这就可以了。您需要访问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