Erlang di ricerca vicino di casa
Domanda
Ho paio di computer interconnessi. Su ogni macchina v'è in esecuzione del nodo Erlang e vorrei comunicare gli uni con gli altri termini Erlang di passaggio (peer-to-peer di stile). Tuttavia i nodi su altri computer sono elencati in nodes()
solo dopo che li ecc ho net_adm:ping
ed C'è un modo per scoprire che cosa tutti i nodi (con lo stesso cookie) sono on LAN (e senza avere la lista dei vicini memorizzati su ogni computer)?
Soluzione
Non c'è nessun sistema LAN scoperta in Erlang / OTP in questo momento, ma ci sono alcuni modi si può andare su di esso:
- Leggi
inet:getif()
per un elenco di sottoreti LAN, e quindi chiamare(net_kernel():epmd_module()):names(IP)
per ogni indirizzo IP in ogni sottorete per raccogliere l'elenco dei nodi che eseguono, poi net_adm: ping () a tutti di connettersi. Credo che questo presuppone che la risoluzione DNS sta funzionando in modo che è possibile convertire il IP a un nome in modo che il ping funziona. (Io sono un po 'arrugginito sui requisiti esatti per i collegamenti dei nodi) - Esegui qualcosa come nodefinder su ogni nodo. Nodefinder è una libreria scoperta che può usare UDP multicast per scoprire nodi Erlang su una LAN.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow