2014-03-19 175 views
0

我正在編寫自己的聊天應用程序,它通過TCP使用服務器客戶端模型。這只是爲了自己的學習。客戶端服務器通過共享公共IP地址?

當我通過本地網絡連接時,沒有任何問題。這我知道,因爲其他本地IP可直接使用。例如:192.168.1.28連接到服務器192.168.1.90

然後我試圖移動是通過互聯網連接。

我已經通過端口4296.

然後我去找我的路由器的公網IP地址,我的路由器端口轉發TCP連接設置爲我的192.168.1.90服務器。它顯示101.1.1.20

然後我用另一個連接在另一個朋友的PC上設置我的客戶端。而executeby連接客戶端IP:101.1.1.20端口4296

它失敗....

經進一步調查,看來我的路由器的公網IP是一個共享的公共IP。這意味着我的路由器上還有另外一層,我想

有關如何進一步瞭解此任務的任何提示?我很難過。

回答

0

你可以嘗試像http://www.whatismyip.com/,它可以告訴你,被別人看到的公網IP地址,當你連接到它們。

這可能不足以讓您從外部進行連接(因爲有可能配置了某些功能來阻止所有傳入連接),但它至少可以讓您瞭解路由器的IP是否與路由器的IP相同外面的世界會看到你。

您可能還想嘗試交換您的端口上的字節順序,因爲這是人們在他們的客戶端和/或服務器程序中經常出錯的地方,並且如果您在本地端口上遇到了錯誤,它將起作用如果你配置了端口匹配,那麼你的路由器沒有通過你的路由器(所以,因爲4296 == 0x10c8,當你的路由器配置爲4296時,也嘗試檢查端口0xc810 == 51216)。

也值得嘗試通過telnet,而不是你自己的客戶端連接只是爲了看看,如果連接成功,因爲有較少的事情,可能錯了。也可以使用諸如wireshark(或tcpdump)之類的東西來告訴你是否有任何SYN數據包在您嘗試這種情況時到達服務器端。

+0

好吧。我得到的路由器ip是從我的ip。這是外部世界所看到的。但試圖連接到該IP到達我的服務器什麼也沒有。我的懷疑是因爲公開的ip是共享ip嗎? – ivanwong888899999

+0

通常,公共可用的IP對於與ISP的連接而言是唯一的,因此如果您的路由器配置爲在該端口上傳遞連接,它將傳遞SYN數據包。 – GrumpyOldTroll

+0

我檢查了我的路由器....它表明自己是另一個不同於whatismyip的公共IP的IP。嗯 – ivanwong888899999

相關問題