2013-10-29 171 views
1

所以我一年的項目涉及與Erlang做一些非常討厭的東西。我剛剛開始認真對待它。我的網絡知識非常有限,需要詢問/爲什麼不起作用。分佈Erlang,網絡,回聲服務器

我跟着本指南,http://20bits.com/article/network-programming-in-erlang,提供二郎山代碼的服務器代碼

的指令來運行它是啓動Erlang的代碼,他reccomends 8888端口回顯被送入它的文本,然後telnet到本地主機和瞧,進入回聲服務器

我的問題是,我很容易在我的機器上運行此服務器,並有一個朋友telnet到服務器?

我認爲這owuld是爲給他我目前的IP地址,並使用遠程登錄中一樣容易,但它沒有工作

說實話,我不認爲這是研究我應該行權至於做與二郎神到網絡,但大多數地方似乎談論本地運行

我理想中的指南將是東西,談到使用多個Erlang節點,以某種非常基本的客戶機/網絡設置的東西

+0

它本地工作(在本地主機上)?它在本地工作(您家/辦公室的機器)嗎?你給你的朋友發了什麼IP地址?所有這些問題的關鍵在於你可能在防火牆後面,並且必須將他從外部轉發到你的機器 - IOW,在上面的第二個「本地」實例中運行一切之後,你就可以找出防火牆,等人 – KevinDTimm

+0

嘿,對不起,我完全忘記提到這一點。是的,當我在本地運行並在端口8888上telnet到127.0.0.1時它工作。 我嘗試完全禁用Windows防火牆和Avast 10分鐘,而我的朋友嘗試連接並且仍然失敗。 但是,你建議我正在嘗試做什麼應該能夠工作? (是的,我知道這是一種不好的做法,禁用防火牆,而不是設置例外,但在現階段調試比較容易) – user1079404

+0

'你給你的朋友發了什麼IP地址?'(我最感興趣的是前兩組數字 - 192.168.xxx.yyy,172.16.xxx.yyy,10.xxx.yyy.zzz,64.38.xxx.yyy - 例如) – KevinDTimm

回答

3

如果你的朋友試圖通過互聯網連接你,答案是否定的,你不能只需給他你的IP地址,並讓他能夠連接。

原因是因爲NAT, or Network Address Translation。大多數計算機不直接連接到互聯網,而是先通過路由器。路由器爲您的計算機提供本地IP地址,通常以192.168或10開頭。當您向互聯網上的服務詢問您的IP時,它會向您報告路由器的互聯網地址,而不是您正在瀏覽的機器。

 IP seen from upstream 
YOU  10.x.x.x 
| 
Router 81.157.x.x 
| 
Internet 

這意味着,當有人試圖連接到您的外部IP地址的Telnet服務器,請求到達您的路由器,不知道該怎麼辦。該連接然後被拒絕。

Internet -> 81.157.x.x:8888 -> Router -> ? 

解決此問題的方法稱爲端口轉發。這是路由器上的一個配置選項,它將把給定端口的請求轉發到本地網絡上的IP地址。您可以通過在自己的機器上本地檢查網絡配置來查找地址。不要使用在線網站,因爲這會給你,而不是路由器的公網IP地址:

Internet -> 81.157.x.x:8888 -> Router -> 10.x.x.x:8888 -> You 

請注意,如果你沒有控制自己的網絡,例如你在學校或工作,你需要一個網絡管理員來做到這一點。除非是對於某些非常重要的事情,否則他們可能不想設置它。如果允許訪問敏感端口(如ssh(22)),像這樣打開網絡可能很危險。此外,企業網絡往往比家庭網絡複雜得多,因此設置這個問題是一個很大的麻煩。

如果你們都在同一個本地網絡上,例如連接到同一所大學或工作網絡,則應該能夠連接到本地配置給出的IP(如ifconfig),而不是來自Google的IP 。

解決方法是,如果您只是與朋友一起測試,則使用VPN, or Virtual Private Network。免費解決方案可從LogMeIn called Hamachi獲得。你和你的朋友都需要下載和安裝這個應用程序。你應該創建一個私人網絡,讓其他人加入。確保您的回顯服務器正在偵聽0.0.0.0,這意味着在所有IP地址上。然後客戶端應該能夠通過服務器的Hamachi IP連接到服務器。

即使無法控制自己的網絡配置,VPN解決方案也應該可以正常工作。這比設置端口轉發更安全,因爲只有您的VPN中的用戶才能訪問您的端口。

最後一個注意事項,請確保您的本地防火牆已禁用,或至少允許您的應用程序和端口8888通過。

+1

我想添加到這個非常完整的答案,你可能有一個代理之間,你和互聯網,可能過濾IP,端口或協議。 – Pascal