Pregunta

Quiero ser capaz de tener dos cáscaras de Erlang para hablar. Estoy corriendo en OS X.

He probado el ejemplo tut17 aquí .

También he intentado:

$ erl -sname foo

y luego en una nueva Terminal:

$ erl -sname bar

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

¿Alguna idea?

¿Fue útil?

Solución

tipo de roto en el mac Es. Por defecto, el Mac no puede resolver su propio nombre corto. El nombre de su anfitrión es muy probablemente "elife.local".

Si se inicia con erl -nombre FQDN, a continuación, los pings funcionarán.

es decir: que comenzaría con

$ erl -name foo@elife.local

Esto probablemente podría ser fijado al hacer el mac capaz de resolver su propio nombre corto

Esta es una salida de ejemplo mi mac. Cuando hago -sNOMBRE consigo el mismo resultado que usted.

El primer 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> 

El otro 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

Otros consejos

Una solución más simple sólo podría estar editando el archivo / etc / hosts y asegúrese de que tiene algo parecido a esta línea:

127.0.0.1 localhost elife

Mi Mac funciona bien con nombres cortos, y creo que esto es lo que hizo.

Para los nodos se comunican entre sí, ambos deben tener la misma cookie. En la misma caja funciona, ya que terminan usando la cookie de archivo $ HOME / .erlang.cookie. Si este archivo no está presente, se crea un nuevo archivo y poner un poco de galleta de azar en ella. conchas futuras utilizan la misma cookie. Pero siempre es mejor especificar la cookie en la línea de comandos con el parámetro setcookie.

erl -nombre node1@foo.local -setcookie MyCookie

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top