erlang局域網內通訊

原文:http://blog.chinaunix.net/uid-22566367-id-382011.htmlhtml

在Programming Erlang這本書中,在寫到第十章中,主要實現的是不一樣節點之間的通訊,書上列出了四步,其中的第一步很容易實現,依葫蘆畫瓢,很容易實現同一臺機子上,不一樣節點之間的通訊,運行結果和書上的徹底一致。
當你急切地去嘗試第二步(在局域網內,不一樣機子之間的通訊)時,你可能會卡住的(本人是這樣的,不知道你?),實踐的結果和Joe所說的徹底不同(你若是按照書上所說,在kvs:start()的狀況下,而後rpc,會獲得這樣的結果——{badrpc, nodedown})。
下面,就把本人的艱難四步總結一下,
1)學會使用net_adm:ping(node@Hostname)命令。
    這個結果多是pong,也多是pang。其中pong表示能夠ping通,pang表示ping不通。
2)ping通局域網。
在linux shell下把你要通訊pc機ping通。
注意有一種可能,就是ping IP地址成功了可是ping機器名稱沒成功,那是由於機器名和IP地址沒有關聯。關聯的方法是編輯機內的hosts文件。windows平臺這個文件在system32/drivers/etc裏,而*nix在/etc裏。把機子的IP和hostname關聯起來,在操做系統shell去ping,成功後再到Erlang下面去ping。(網上的資料)
3)啓動erlang節點。
    若是以上步驟能實現的話,就啓動erlang shell吧。
例如,在一個局域內,我在不一樣的機子上各自啓動了一個erlang shell。
gaoyi@gaoyi-laptop:~$ erl -name fang@192.168.200.53 -setcookie 123
[sunny@localhost ~]4$ erl -name sunny@192.168.200.11 -setcookie 123
注:若是在啓動的時候,不用ip的話,下面是ping不通的。
4)net_adm:ping的實現。
    例如,我在gaoyi機子上,執行net_adm:ping('sunny@192.168.200.11').
獲得的結果是pong,表示能夠ping通了,o(∩∩)o...哈哈。
注意:net_adm:ping()內的參數必須帶引號的。

至此,咱們實現了局域網之間的通訊,能夠進一步測試程序了。node

相關文章
相關標籤/搜索