2010-02-21 9 views
5

Tengo un par de computadoras interconectadas. En cada máquina hay un nodo Erlang en ejecución y me gustaría comunicarme entre ellos pasando los términos de Erlang (estilo de igual a igual). Sin embargo, los nodos en otras computadoras se enumeran en nodes() solo después de I net_adm:ping, etc. ¿Hay alguna manera de averiguar qué están todos los nodos (con la misma cookie) en LAN (y sin tener una lista de vecinos almacenados en cada computadora)?Búsqueda de vecinos de Erlang

Respuesta

9

No hay sistema de descubrimiento de LAN en Erlang/OTP en este momento, pero hay algunas maneras que usted puede ir sobre él:

  • Leer inet:getif() para obtener una lista de subredes LAN, y luego llamar a (net_kernel():epmd_module()):names(IP) para cada IP dirección en cada subred para recopilar la lista de nodos en ejecución, luego net_adm: ping() todos para conectarse. Creo que esto supone que la resolución de DNS está funcionando para que pueda convertir la IP a un nombre para que funcione el ping. (Estoy un poco oxidado sobre los requisitos exactos para las conexiones de nodo)
  • Ejecutar algo así como nodefinder en cada nodo. Nodefinder es una biblioteca de descubrimiento que puede usar udp de multidifusión para descubrir nodos de Erlang en una LAN.
+0

nodefinder es exactamente lo que necesito. Gracias. –

Cuestiones relacionadas