Ответ 1
Кроме того, при запуске системы Erlang существует флаг командной строки -setcookie
, который позволит вам указать cookie во время запуска.
erl -name [email protected] -setcookie FOOBAR
Надеюсь, что это поможет, Jacob
Попытка получить два узла 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 тоже будут хороши.
Кроме того, при запуске системы Erlang существует флаг командной строки -setcookie
, который позволит вам указать cookie во время запуска.
erl -name [email protected] -setcookie FOOBAR
Надеюсь, что это поможет, Jacob
Начните с проверки каждого cookie node. Из оболочки:
erlang:get_cookie().
Если они не совпадают, замените один из файлов cookie node на другой:
erlang:set_cookie(node(), "newcookie").
Если все работает, вам нужно выяснить, почему параметр cookie не выбирается из файла конфигурации или командной строки arg.
Файл cookie Erlang должен находиться в каталоге пользователей. Не каталог приложения.
Значит, ваше - это что-то вроде:
C:\Documents and Settings\InterstarUser\.erlang.cookie
Вы можете увидеть местоположение HOME с командой env
в командной строке, если я правильно помню из своих дней Windows.
net_adm: пинг()
попробуйте net_adm: ping() из обоих узлов.
http://www.erlang.org/documentation/doc-5.4.13/lib/kernel-2.10.13/doc/html/net_adm.html
erlang:set_cookie(node(), 'newcookie').
не
erlang:set_cookie(node(), "newcookie").
Приходит на ум несколько вещей: