【发布时间】:2011-01-19 06:14:54
【问题描述】:
我有几台相互连接的计算机。在每台机器上都运行着 Erlang 节点,我想通过 Erlang 术语(点对点风格)相互交流。但是,其他计算机上的节点仅在我 net_adm:pinged 等之后才会在 nodes() 中列出。有没有办法找出 LAN 上的所有节点(具有相同的 cookie)(并且没有存储邻居列表)每台计算机)?
【问题讨论】:
我有几台相互连接的计算机。在每台机器上都运行着 Erlang 节点,我想通过 Erlang 术语(点对点风格)相互交流。但是,其他计算机上的节点仅在我 net_adm:pinged 等之后才会在 nodes() 中列出。有没有办法找出 LAN 上的所有节点(具有相同的 cookie)(并且没有存储邻居列表)每台计算机)?
【问题讨论】:
目前 Erlang/OTP 中没有 LAN 发现系统,但有几种方法可以解决:
inet:getif() 获取LAN 子网列表,然后为每个子网中的每个IP 地址调用(net_kernel():epmd_module()):names(IP) 以收集正在运行的节点列表,然后net_adm:ping() 将它们全部连接起来。我认为这假设 DNS 解析正在工作,以便您可以将 IP 转换为名称,以便 ping 正常工作。 (我对节点连接的确切要求有点生疏)【讨论】: