Domanda

Voglio essere in grado di avere due gusci Erlang per parlare. Sono in esecuzione su OS X.

Ho provato l'esempio tut17 qui .

Ho anche provato:

$ erl -sname foo

e poi in un nuovo terminale:

$ erl -sname bar

(bar@elife)1> net_adm:ping(foo@elife).
pang

Tutte le idee?

È stato utile?

Soluzione

È un po 'rotto sul mac. Per impostazione predefinita, il Mac non può risolvere il proprio nome breve. Il nome del tuo host è davvero probabilmente "elife.local".

Se si inizia a Erl con -name nome di dominio completo, quindi i ping funzionerà.

vale a dire: si dovrebbe iniziare con

$ erl -name foo@elife.local

questo probabilmente potrebbe essere fissato facendo il mac in grado di risolvere un proprio nome breve

Ecco ad esempio l'uscita dal mio mac. Quando faccio -sNAME ottengo lo stesso risultato di te.

Il primo nodo:

$ erl -name foo@mookie.local
Erlang R13B03 (erts-5.7.4) [source] [smp:2:2] [rq:2] [async-threads:0] [kernel-poll:false]

Eshell V5.7.4  (abort with ^G)
(foo@mookie.local)1> 

L'altro nodo:

$ erl -name bar@mookie.local
Erlang R13B03 (erts-5.7.4) [source] [smp:2:2] [rq:2] [async-threads:0] [kernel-poll:false]

Eshell V5.7.4  (abort with ^G)
(bar@mookie.local)1> net_adm:ping('foo@mookie.local').
pong

Altri suggerimenti

Una correzione più semplice potrebbe essere solo modificando il file / etc / hosts e assicurarsi di avere qualcosa di simile a questa linea:

127.0.0.1 localhost elife

Il mio Mac funziona bene con shortnames, e credo che questo è quello che ha fatto.

Per i nodi comunicano tra loro, entrambi dovrebbero avere lo stesso cookie. Sulla stessa macchina funziona come finiscono con il cookie di file $ HOME / .erlang.cookie. Se questo file non è presente, creare un nuovo file e mettere un po 'biscotto casuale in esso. conchiglie uso futuro lo stesso cookie. Ma è sempre meglio specificare il cookie nella riga di comando tramite il parametro setcookie.

Erl -name node1@foo.local -setcookie mycookie

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top