Erlang: Запрещенные узлы/Может быть, вопрос с Cookie

Попытка получить два узла erlang, разговаривающих друг с другом: один на машине Ubuntu и один на Windows XP.

Мы получаем сообщение "" Соединение "из запрещенного сообщения node", которое предотвращает получение сообщений node от другого.

Они оба используют версии 5.XXX Erlang OTP.

Оба узла имеют одинаковый файл cookie (.erlang.cookie)

Мы начинаем приемник node с:

erl -name [email protected]

и вызывая функцию на нем с помощью 'fred @ipaddress' (в одинарных кавычках)

Мы отключили брандмауэры.

Итак, что еще может препятствовать соединению?

Обновление: мы используем erlang: get_cookie(), чтобы проверить файл cookie на обоих узлах, а значения разные. Это проблема. Мы думаем, что мы устанавливаем файл cookie, помещая тот же файл .erlang.cookie в каталог, в котором мы запускаем erlang на обеих машинах. Но может быть, это не то место?

Обновление 2: спасибо за ответы всем. Мы выбрали Ранок в качестве нашего ответа, потому что это сработало для нас. Я уверен, что некоторые из альтернативных способов настройки файла cookie тоже будут хороши.

Ответ 1

Кроме того, при запуске системы Erlang существует флаг командной строки -setcookie, который позволит вам указать cookie во время запуска.

erl -name [email protected] -setcookie FOOBAR

Надеюсь, что это поможет, Jacob

Ответ 2

Начните с проверки каждого cookie node. Из оболочки:

erlang:get_cookie().

Если они не совпадают, замените один из файлов cookie node на другой:

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

Если все работает, вам нужно выяснить, почему параметр cookie не выбирается из файла конфигурации или командной строки arg.

Ответ 3

Файл cookie Erlang должен находиться в каталоге пользователей. Не каталог приложения.

Значит, ваше - это что-то вроде:

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

Вы можете увидеть местоположение HOME с командой env в командной строке, если я правильно помню из своих дней Windows.

Ответ 5

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

не

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

Ответ 6

Приходит на ум несколько вещей:

  • Вы пытались настроить cookie через erlang: set_cookie на обоих узлах?
  • Если в каталоге $HOME не найден файл .erlang.cookie, он будет создан. Может быть, один из файлов .erlang.cookie находится не в нужном месте на одной машине? Вы можете искать свои жесткие диски для файла, и если вы найдете больше, чем тот, который вы создали, erlang, возможно, разместил его и использует.