2010-02-21 10 views
5

Ich habe ein paar miteinander verbundene Computer. Auf jedem Rechner läuft ein Erlang-Knoten und ich möchte mit den Erlang-Begriffen kommunizieren (Peer-to-Peer-Stil). Jedoch werden Knoten auf anderen Computern in nodes() nur aufgeführt, nachdem ich sie 0.net_adm:ping etc. editiert hat. Gibt es eine Möglichkeit, wie alle Knoten (mit demselben Cookie) im LAN (und ohne Liste der Nachbarn auf jedem Computer gespeichert) zu finden?Erlang Nachbarsuche

Antwort

9

Es gibt kein LAN-Identifizierungs-System in Erlang/OTP im Moment, aber es gibt ein paar Möglichkeiten, wie Sie darüber gehen könnten:

  • liest inet:getif() für eine Liste von LAN-Subnetze und (net_kernel():epmd_module()):names(IP) dann für jeden IP-Anruf Adresse in jedem Subnetz, um die Liste der laufenden Knoten zu sammeln, dann net_adm: ping() sie alle zu verbinden. Ich denke, dies setzt voraus, dass DNS-Auflösung funktioniert, so dass Sie die IP in einen Namen konvertieren können, so dass der Ping funktioniert. (Ich bin ein wenig rostig auf die genauen Anforderungen für Knotenverbindungen)
  • Führen Sie etwas wie nodefinder auf jedem Knoten. Nodefinder ist eine Erkennungsbibliothek, die Multicast-UDP zum Erlangen von Erlang-Knoten in einem LAN verwenden kann.
+0

nodefinder ist genau das, was ich brauche. Vielen Dank. –