У меня есть несколько взаимосвязанных компьютеров. На каждой машине там выполняет узел Erlang, и я хотел бы общаться друг с другом передающие условия Erlang (одноранговый стиль). Однако узлы на других компьютерах перечислены в nodes()
только после того, как я net_adm:ping
редактор их и т.д. Есть ли какой-либо путь, как узнать то, что все узлы (с тем же cookie) находятся на LAN (и не имея списка соседей, сохраненных на каждом компьютере)?
На данный момент в Erlang / OTP нет системы обнаружения LAN, но есть несколько способов сделать это:
inet: getif ()
, чтобы узнать список подсетей LAN, и затем вызовите (net_kernel (): epmd_module ()): names (IP)
для каждого IP-адреса в каждой подсети, чтобы собрать список работающих узлов, затем net_adm: ping () их всех для подключения. Я думаю, это предполагает, что разрешение DNS работает, поэтому вы можете преобразовать IP в имя, чтобы пинг работал. (Я немного забыл о точных требованиях к соединениям узлов)