Pergunta

Tentando obter dois erlang nós conversando uns com os outros :em uma máquina Ubuntu e no Windows XP.

Estamos recebendo um "Tentativa de ligação do nó não permitido"a mensagem que impede que um nó receber mensagens do outro.

Ambos estão usando 5.XXX versões de Erlang OTP.

Ambos os nós têm a mesma cookie ( .erlang.cookie)

Estamos começando o receptor nó com :

erl -name fred@ipaddress

e chamar a função com o "fred@ipaddress' (aspas simples)

Nós virou firewalls fora.

Então, o que mais pode estar impedindo a conexão?

Atualização :estamos usando erlang:get_cookie() para verificar o cookie em ambos os nós, e os valores são diferentes.Então é esse o problema.Pensamos que estamos definindo o cookie colocando o mesmo .erlang.arquivo de cookie no diretório onde realizamos erlang em ambas as máquinas.Mas, talvez, este é o lugar errado?

Atualização 2 :obrigado pelas respostas de todos.Escolhemos Ranok como a nossa resposta, porque funcionou muito bem para nós.Tenho certeza de que algumas das formas alternativas de definição de cookie seria bom também.

Foi útil?

Solução

Além disso, quando você iniciar o sistema Erlang, há uma linha de comando bandeira -setcookie o que irá permitir que você especifique o cookie na hora da partida.

erl -name fred@ipaddress -setcookie FOOBAR

Espero que ajude, Jacó

Outras dicas

Comece verificando bolinho de cada nó. A partir do shell:

erlang:get_cookie().

Se eles não são os mesmos, então mudar de cookies do nó para coincidir com o outro:

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

Se tudo funcionar você precisa ver porque a configuração de cookies não está sendo colhidos a partir do arg arquivo de configuração ou a linha de comando.

O cookie Erlang deve estar no diretório de usuários. Não é o diretório do aplicativo.

Assim, o seu é algo como:

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

Você pode ver a localização de casa com o env comando na linha de comando, se bem me lembro dos meus tempos de Windows.

net_adm: mesa de ping ()

tentar net_adm: mesa de ping () de ambos os nós.

http : //www.erlang.org/documentation/doc-5.4.13/lib/kernel-2.10.13/doc/html/net_adm.html

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

não

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

Um par de coisas vêm à mente:

  1. Você tentou definir o cookie via erlang:? Set_cookie em ambos os nós
  2. Se nenhum arquivo .erlang.cookie é encontrado no diretório $ HOME, um será criado. Poderia ser que um dos arquivos .erlang.cookie não está no lugar certo em uma máquina? Você pode procurar seus discos rígidos para o arquivo e se você encontrar mais do que o que você criou, erlang poderia ter colocá-lo lá e está usando isso.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top