Pregunta

Intentando que dos nodos erlang se comuniquen entre sí: uno en una máquina Ubuntu y otro en Windows XP.

Estamos obteniendo un " intento de conexión desde un nodo no permitido " mensaje que impide que un nodo reciba mensajes del otro.

Ambos usan versiones 5.XXX de Erlang OTP.

Ambos nodos tienen la misma cookie (.erlang.cookie)

Estamos comenzando el nodo receptor con:

erl -name fred@ipaddress

y llamando a la función con 'fred @ ipaddress' (entre comillas simples)

Hemos desactivado los firewalls.

Entonces, ¿qué más puede estar impidiendo la conexión?

Actualización: estamos usando erlang: get_cookie () para verificar la cookie en ambos nodos, y los valores son diferentes. Entonces este es el problema. Creemos que estamos configurando la cookie colocando el mismo archivo .erlang.cookie en el directorio donde ejecutamos erlang en ambas máquinas. ¿Pero tal vez este es el lugar equivocado?

Actualización 2: gracias por las respuestas a todos. Elegimos a Ranok como nuestra respuesta porque funcionó bien para nosotros. Estoy seguro de que algunas de las formas alternativas de configurar la cookie también estarían bien.

¿Fue útil?

Solución

Además, cuando inicia el sistema Erlang, hay un indicador de línea de comando -setcookie que le permitirá especificar la cookie en el momento del inicio.

erl -name fred@ipaddress -setcookie FOOBAR

Espero que ayude, Jacob

Otros consejos

Comience marcando la cookie de cada nodo. Desde el shell:

erlang:get_cookie().

Si no son lo mismo, cambie una de las cookies del nodo para que coincida con la otra:

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

Si todo funciona, necesita ver por qué no se selecciona la configuración de cookies del archivo de configuración o de la línea de comando arg.

La cookie Erlang debe estar en el directorio de usuarios. No es el directorio de la aplicación.

Entonces el tuyo es algo así como:

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

Puede ver la ubicación de HOME con el comando env en la línea de comando si recuerdo correctamente de mis días de Windows.

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

no

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

Se me ocurren un par de cosas:

  1. ¿Has intentado configurar la cookie a través de erlang: set_cookie en ambos nodos?
  2. Si no se encuentra ningún archivo .erlang.cookie en el directorio $ HOME, se creará uno. ¿Podría ser que uno de los archivos .erlang.cookie no está en el lugar correcto en una máquina? Puede buscar el archivo en sus discos duros y si encuentra más del que creó, Erlang podría haberlo puesto allí y lo está utilizando.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top