2010-02-21 15 views
5

Ho un paio di computer interconnessi. Su ogni macchina è in esecuzione il nodo Erlang e mi piacerebbe comunicare tra loro i termini di Erlang (stile peer-to-peer). Tuttavia i nodi su altri computer sono elencati in nodes() solo dopo I net_adm:ping ed ecc. Esiste un modo per scoprire come tutti i nodi (con lo stesso cookie) si trovano sulla LAN (e senza avere l'elenco dei vicini memorizzati su ciascun computer)?Ricerca vicina di Erlang

risposta

9

Non c'è nessun sistema LAN scoperta in Erlang/OTP in questo momento, ma ci sono alcuni modi si può andare su di esso:

  • inet:getif() Leggi per un elenco di sottoreti LAN, e quindi chiamare (net_kernel():epmd_module()):names(IP) per ogni IP indirizzo in ciascuna sottorete per raccogliere l'elenco dei nodi in esecuzione, quindi net_adm: ping() tutti per la connessione. Penso che questo presupponga che la risoluzione DNS funzioni in modo tale da poter convertire l'IP in un nome in modo che il ping funzioni. (Sono un po 'arrugginito sui requisiti esatti per le connessioni dei nodi)
  • Eseguire qualcosa come nodefinder su ciascun nodo. Nodefinder è una libreria di discovery che può utilizzare l'udp multicast per scoprire i nodi di Erlang su una LAN.
+0

nodo è esattamente quello che mi serve. Grazie. –