Domanda

Cercando di far dialogare due nodi erlang: uno su una macchina Ubuntu e uno su Windows XP.

Stiamo ricevendo un " Tentativo di connessione dal nodo non consentito " messaggio che impedisce a un nodo di ricevere messaggi dall'altro.

Entrambi utilizzano la versione 5.XXX di Erlang OTP.

Entrambi i nodi hanno lo stesso cookie (.erlang.cookie)

Stiamo iniziando il nodo del destinatario con:

erl -name fred@ipaddress

e chiamando la funzione con "fred @ ipaddress" (tra virgolette singole)

Abbiamo disattivato i firewall.

Quindi cos'altro potrebbe impedire la connessione?

Aggiornamento: stiamo usando erlang: get_cookie () per controllare il cookie su entrambi i nodi e i valori sono diversi. Quindi è questo il problema. Pensiamo di impostare il cookie inserendo lo stesso file .erlang.cookie nella directory in cui eseguiamo erlang su entrambe le macchine. Ma forse questo è il posto sbagliato?

Aggiornamento 2: grazie per le risposte a tutti. Abbiamo scelto Ranok come nostra risposta perché ha funzionato bene per noi. Sono sicuro che anche alcuni dei modi alternativi di impostare i cookie andrebbero bene.

È stato utile?

Soluzione

Inoltre, quando avvii il sistema Erlang, c'è un flag della riga di comando -setcookie che ti consentirà di specificare il cookie all'avvio.

erl -name fred@ipaddress -setcookie FOOBAR

Spero che aiuti, Jacob

Altri suggerimenti

Inizia controllando il cookie di ciascun nodo. Dalla shell:

erlang:get_cookie().

Se non sono gli stessi, cambia uno dei cookie del nodo in modo che corrisponda all'altro:

erlang:set_cookie(node(), "newcookie").

Se tutto funziona, è necessario capire perché l'impostazione del cookie non viene scelta dal file di configurazione o dalla riga di comando arg.

Il cookie Erlang dovrebbe trovarsi nella directory degli utenti. Non la directory dell'applicazione.

Quindi il tuo è qualcosa del tipo:

C:\Documents and Settings\InterstarUser\.erlang.cookie

Puoi vedere la posizione di HOME con il comando env nella riga di comando se ricordo bene dai miei giorni di Windows.

erlang:set_cookie(node(), 'newcookie').

non

erlang:set_cookie(node(), "newcookie").

Un paio di cose vengono in mente:

  1. Hai provato a impostare il cookie tramite erlang: set_cookie su entrambi i nodi?
  2. Se non viene trovato alcun file .erlang.cookie nella directory $ HOME, ne verrà creato uno. Potrebbe essere che uno dei file .erlang.cookie non sia nel posto giusto su una macchina? Potresti cercare il tuo disco rigido per il file e se trovi più di quello che hai creato, Erlang potrebbe averlo messo lì e lo sta usando.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top