16

2つのerlangノードを相互に通信させようとしています。1つはUbuntuマシン上にあり、もう1つはWindowsXP上にあります。

許可されていないノードからの接続試行」メッセージが表示され、一方のノードがもう一方のノードからメッセージを受信できなくなります。

どちらもErlangOTPの5.XXXバージョンを使用しています。

両方のノードに同じCookie(.erlang.cookie)があります

レシーバーノードを次のように開始します:

erl -name fred@ipaddress

'fred @ ipaddress'を使用して関数を呼び出します(一重引用符で囲みます)

ファイアウォールをオフにしました。

では、他に何が接続を妨げているのでしょうか?

更新:erlang:get_cookie()を使用して両方のノードのCookieをチェックしていますが、値が異なります。これが問題です。両方のマシンでerlangを実行するディレクトリに同じ.erlang.cookieファイルを配置することでCookieを設定していると思います。しかし、多分これは間違った場所ですか?

アップデート2:皆さんの回答に感謝します。それが私たちにとってうまくいったので、私たちは答えとしてRanokを選びました。クッキーを設定する別の方法のいくつかもうまくいくと確信しています。

4

6 に答える 6

12

また、Erlang システムを起動すると-setcookie、起動時に Cookie を指定できるコマンドライン フラグがあります。

erl -name fred@ipaddress -setcookie FOOBAR

お役に立てば幸いです、ジェイコブ

于 2009-01-17T15:38:12.167 に答える
5

各ノードの Cookie を確認することから始めます。シェルから:

erlang:get_cookie().

それらが同じでない場合は、ノードの Cookie の 1 つを変更して、他の Cookie と一致させます。

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

すべてが機能する場合は、Cookie 設定が構成ファイルまたはコマンド ライン引数から選択されていない理由を確認する必要があります。

于 2009-01-16T23:41:01.600 に答える
3

ErlangCookieはusersディレクトリにあるはずです。アプリケーションディレクトリではありません。

だからあなたは次のようなものです:

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

envWindowsの時代から正しく覚えていれば、コマンドラインのコマンドでHOMEの場所を確認できます。

于 2009-01-17T18:44:43.553 に答える
2

net_adm:ping()

両方のノードから net_adm:ping() を試してください。

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

于 2009-01-18T19:28:30.963 に答える
2
erlang:set_cookie(node(), 'newcookie').

いいえ

erlang:set_cookie(node(), "newcookie").
于 2009-08-11T08:22:58.810 に答える
1

いくつかのことが思い浮かびます:

  1. 両方のノードで erlang:set_cookie を介して Cookie を設定しようとしましたか?
  2. $HOME ディレクトリに .erlang.cookie ファイルが見つからない場合は、作成されます。.erlang.cookie ファイルの 1 つが 1 台のマシンの正しい場所にないのではないでしょうか? ハード ドライブでファイルを検索し、作成したファイルが複数見つかった場合は、erlang がそのファイルをそこに置き、使用している可能性があります。
于 2009-01-16T20:04:30.913 に答える