如果我启动我的单节点应用程序,那么在默认的EPMD端口4369上ping成功。如果我现在将ERL_EPMD_PORT: 44370的端口更改为不同的端口,我将无法再连接到它。EPMD正在监听44370经过一些调试后,我发现下面的ping代码由于pang处理而停止了我的应用程序。我这里不包括pong。
Ping代码:
net_adm:ping(TargetNode) --> pang注意:我知道集群需要使用相同的EPMD端口才能在集群模式下工作。但我并不认为Node已经准备好连接到其他节点了。它已经在pinging自身时停止了。另一方面,如果使用默认端口,则一切正常。
似乎net_adm:ping(Host)没有使用环境变量ERL_EPMD_PORT来执行pinging操作,我说的对吗?或者这里的问题出在哪里?
发布于 2021-02-02 23:36:01
$> epmd &
[1] 10257
$> epmd -names
epmd: up and running on port 4369 with data:
$> fg
[1] + 10257 running epmd
^C
$> epmd -port 44370 &
[1] 10473
$> epmd -names
epmd: Cannot connect to local epmd
$> export ERL_EPMD_PORT=44370
$> epmd -names
epmd: up and running on port 44370 with data:
$> erl -sname client1@localhost
Erlang/OTP 23 [erts-11.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1]
Eshell V11.1 (abort with ^G)
(client1@localhost)1> net_adm:ping(node()).
pong
(client1@localhost)2> 我将验证本地epmd确实在该端口上侦听(在linux中,您可以使用ss:ss -punta | grep 44370),并且TargetNode已正确构建。
https://stackoverflow.com/questions/66012128
复制相似问题