Erlang граничат с поиском

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

5
задан Jakub Kulhan 21 February 2010 в 02:47
поделиться

1 ответ

На данный момент в Erlang / OTP нет системы обнаружения LAN, но есть несколько способов сделать это:

  • Прочтите inet: getif () , чтобы узнать список подсетей LAN, и затем вызовите (net_kernel (): epmd_module ()): names (IP) для каждого IP-адреса в каждой подсети, чтобы собрать список работающих узлов, затем net_adm: ping () их всех для подключения. Я думаю, это предполагает, что разрешение DNS работает, поэтому вы можете преобразовать IP в имя, чтобы пинг работал. (Я немного забыл о точных требованиях к соединениям узлов)
  • Запустите что-то вроде nodefinder на каждом узле. Nodefinder - это библиотека обнаружения, которая может использовать многоадресный UDP для обнаружения узлов Erlang в локальной сети.
9
ответ дан 14 December 2019 в 01:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: