我有几台互连的计算机。在每台机器上都有运行 Erlang 节点,我想通过 Erlang 术语(点对点风格)相互通信。但是,其他计算机上的节点列在 nodes()
中。只有经过我 net_adm:ping
编辑它们等。有什么方法可以找出 LAN 上的所有节点(具有相同的 cookie)(并且没有在每台计算机上存储邻居列表)?
最佳答案
目前 Erlang/OTP 中没有 LAN 发现系统,但是您可以通过以下几种方法来实现:
inet:getif()
获取 LAN 子网列表,然后调用 (net_kernel():epmd_module()):names(IP)
为每个子网中的每个 IP 地址收集正在运行的节点列表,然后 net_adm:ping() 将它们全部连接起来。我认为这假设 DNS 解析正常工作,以便您可以将 IP 转换为名称,以便 ping 工作。 (我对节点连接的确切要求有点生疏)关于search - 二郎邻居搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2304566/