2017-08-09 54 views
-2

我寫的基於斷碼在此鏈接通訊軟件:將消息發送到計算機斷網蟒

http://code.activestate.com/recipes/578802-send-messages-between-computers/

我愛這個代碼和它的作品很好,但它不會讓我將消息發送到不在我的網絡上的計算機。我想知道是否有辦法修改此代碼,以便我可以在任何地方向計算機發送消息。

任何幫助或建議將是偉大的。

+0

如果計算機在萬維網上,那麼它在某種程度上*在你的網絡上,它可能沒有一個你可以與之通話的面向公衆的IP地址。 – turbulencetoo

+0

機會來源和/或目標網絡在NAT後面。在這種情況下,有兩種通信方式:使用具有公共地址的中央服務器來中繼客戶端之間的消息(如IRC)或在每個NAT防火牆中設置端口以允許通信。有更高級別的庫處理網絡通信,處理普通套接字是痛苦的,檢查龍捲風或扭曲。 –

回答

0

該代碼應該工作。 您可以使用ping來確認目的地嗎? 如果您的計算機位於內部網絡上,外部機器可能只能看到您的NAT地址,那麼這是您內部網絡向外界呈現的地址。此外,您嘗試發送給的計算機還需要有外部IP,這不是爲內部網絡保留的地址。 理想情況下,您希望與之聊天的兩臺計算機都將具有非內部IP。

+0

這個答案在事實上是正確的,但也可能只是一個評論。 –

+0

如何獲得非內部IP地址? – Max

+0

如果它應該在任何地方工作,而不是爲什麼它會在網站上說它只能在你的網絡上工作? – Max

-1

該代碼配方使用數據報套接字(UDP協議),通常它們被網關/代理/防火牆阻止。您可能不得不改用TCP來代替。

+0

我不認爲這很重要。大多數網絡使用多對一的NAT(源NAT),除非您在防火牆中設置端口轉發,否則無法從公共網絡連接UDP和TCP。 「阻塞」是源NAT的自然副作用。 –

+0

是的,我想我也對UDP多播感到困惑。通常普通的UDP路由很好,我猜(除了NAT問題) –