2010-02-21 5 views
5

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

ответ

9

Там нет системы открытия LAN в Erlang/OTP прямо сейчас, но есть несколько способов, вы могли бы идти о нем:

  • Read inet:getif() для списка локальных подсетей, а затем вызвать (net_kernel():epmd_module()):names(IP) для каждого IP адрес в каждой подсети для сбора списка запущенных узлов, затем net_adm: ping() их всех для подключения. Я думаю, это предполагает, что разрешение DNS работает так, что вы можете преобразовать IP в имя, чтобы ping работал. (Я немного ржав на точных требованиях к соединениям узлов)
  • Запустите что-то вроде nodefinder на каждом узле. Nodefinder - библиотека обнаружения, которая может использовать многоадресную udp для обнаружения узлов Erlang в локальной сети.
+0

nodefinder - именно то, что мне нужно. Благодарю. –

Смежные вопросы