2

有两台机器:M1 有两个 ip 地址 192.168.5.47、192.168.1.250。M2 的 IP 为 192.168.5.250。

我在 M1 上启动了一个 erlang 节点:

nik@nik-PC:~/erlsrc/test_mk$ erl -name 'test@127.0.0.1' -setcookie cook
Erlang/OTP 22 [erts-10.6.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1]

Eshell V10.6.2  (abort with ^G)
(test@127.0.0.1)1> 

然后,我在 M2 上创建另一个节点并尝试 ping M1:

nik2@nik2-PC:~$ erl -name 'test2@127.0.0.1' -setcookie cook
Erlang/OTP 22 [erts-10.6.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1]

Eshell V10.6.2  (abort with ^G)
(test2@127.0.0.1)1> 
(test2@127.0.0.1)1> net_adm:ping('test@192.168.5.47').
pang
(test2@127.0.0.1)2> 

如果其中一个具有多个 IP 地址并以“name@localhost”或“name@127.0.0.1”启动,如何在远程机器上的节点之间进行通信?还是使用域名更好?

4

1 回答 1

1

如果节点在一个 LAN 网络中运行,但在不同的计算机上运行,​​您可以尝试在每台计算机上检测您的 IP,例如运行:

$ hostname -I

让我们假设机器 1有 IP192.168.5.47并且机器 2有 IP 192.168.5.250。现在您需要在机器 1name上运行节点,并带有包含 IP -机器 #1的标志:

$ erl -name 'test@192.168.5.47' -setcookie cook

现在在机器 2中执行相同操作,但使用机器 2 -机器 #2的 IP :

$ erl -name 'test@192.168.5.250' -setcookie cook

现在您可以尝试ping机器 # 1test@192.168.5.47发送test@192.168.5.250

(test@192.168.5.47)1> net_adm:ping('test@192.168.5.250').
pong
于 2020-01-30T13:29:31.963 回答