2009-01-16 68 views
11

試圖讓兩個erlang節點彼此交談:一個在Ubuntu機器上,另一個在Windows XP上。Erlang:不允許的節點/也許Cookie問題

我們得到一個「來自禁止節點的連接嘗試」消息,它阻止一個節點從另一個節點接收消息。

他們都使用Erlang OTP的5.XXX版本。

兩個節點具有相同的cookie(.erlang.cookie)

我們開始接收節點有:

erl -name [email protected] 

,並調用該函數就可以用「弗雷德@ ip地址」(單引號)

我們已關閉防火牆。

那麼還有什麼可能阻止連接?

更新:我們使用erlang:get_cookie()來檢查兩個節點上的cookie,並且這些值是不同的。這是問題所在。我們認爲我們通過在兩臺機器上運行erlang的目錄中放置相同的.erlang.cookie文件來設置cookie。但也許這是錯誤的地方?

更新2:謝謝大家的回答。我們選擇Ranok作爲我們的答案,因爲它適合我們。我相信一些設置cookie的替代方法也可以。

回答

11

此外,當您啓動Erlang系統時,會有一個命令行標記-setcookie,它可讓您在開始時指定cookie。

erl -name [email protected] -setcookie FOOBAR 

希望幫助, 雅各

+0

是的,謝謝,那工作一種享受 – interstar 2009-01-19 19:09:34

1

幾件事情浮現在腦海中:

  1. 您是否嘗試過通過設置二郎餅乾:兩個節點上set_cookie?
  2. 如果在$ HOME目錄中找不到.erlang.cookie文件,則會創建一個.erlang.cookie文件。難道是.erlang.cookie文件中的一個在一臺機器上不在正確的位置?你可以搜索你的硬盤驅動器的文件,如果你發現比你創建的更多,erlang可能會把它放在那裏並使用它。
5

首先檢查每個節點的cookie。從貝:

erlang:get_cookie(). 

如果他們是不一樣的,然後更改節點的餅乾之一匹配其他:

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

如果一切正常,你需要明白爲什麼該cookie設置不從配置文件或命令行參數中選取。

2

Erlang的餅乾應該是在用戶目錄。不是應用程序目錄。

所以你的是一樣的東西:

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

你可以看到首頁的位置,同時在命令行命令env,如果我從我的Windows日子記錯。

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

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