2016-08-01 47 views
-2

我正在使用的Tcp客戶端/服務器代碼如下:clientserver。 正如標題所示,我正在計算機上運行服務器代碼,並且想使用客戶端代碼從另一臺設備連接到它。我的問題是,我的客戶端代碼必須連接到哪個IP地址?我知道有很多相關的帖子,但我只是獲取有關錯誤的信息,而不是解決方案。將Tcp客戶端從一臺設備連接到另一臺設備的Tcp服務器

+0

無論服務器具有的可路由IP地址。如果您不知道如何找到它,請在服務器上打開命令提示符,然後輸入'ipconfig'並按ENTER鍵。如果您不熟悉網絡,則還需要了解防火牆配置,以確保防火牆不會阻止您使用的任何端口上的請求。 – itsme86

+0

ipconfig中的「可路由IP地址」究竟是什麼?有IPv4,IPv6,子網掩碼和默認網關... – Maydayfluffy

+0

客戶端可以訪問的任何IP地址。可能是IPv4地址。設備只有一個網絡接口嗎?通常至少還有一個回送。你似乎很樂意通過一個小型的網絡接口101培訓。閱讀關於這個東西。網上有很多關於它的資料。這是所有的一般理論,不適合SO問題。 – itsme86

回答

1

這是開發客戶端/服務器應用程序時的常見問題。在典型的家庭網絡中,有多個本地IP地址和一個外部IP地址。所有從外部與您的網絡進行通信的設備都必須使用外部IP地址。但是,在編寫客戶端/服務器應用程序時,如果您只需輸入外部IP地址作爲連接的地址,您很快就會發現這不起作用。

您需要使用端口轉發。客戶端和服務器將通過特定端口進行通信,端口轉發是您的路由器在客戶端連接到外部IP地址時知道將數據發送到哪個本地IP地址的方式。您想要登錄到您的路由器設置,導航到有關端口轉發的部分,並指定通過您服務器中使用的端口進行的通信應重定向到運行服務器的本地IP地址。具體如何在路由器上更改這些設置取決於您使用的路由器。

在運行服務器的機器上的Windows命令提示符下運行ipconfig命令。從結果中獲取本地IPv4地址。這是端口轉發您的客戶端/服務器應用程序使用的端口時要使用的地址。相應地調整您的路由器設置,然後您的客戶端應該可以使用您的外部IP地址。

要找到您的外部IP地址,任何網站(如http://www.whatsmyip.org/)都應該正常工作。

如果您現在想要避免所有這些問題,只需在家庭網絡上測試您的應用程序,那麼請使用在運行服務器的計算機上運行ipconfig命令時找到的本地IPv4地址。請注意,這隻有在客戶端和服務器都在同一網絡上運行時纔有效。

+0

正如您所建議的那樣,我將客戶端和服務器都放在同一個網絡上。我正在使用筆記本電腦(服務器)的本地IPv4地址,因此我的客戶端應該能夠理解該地址。但是,我收到此錯誤 - WinRT信息:連接嘗試失敗,因爲連接方在一段時間後沒有正確響應,或者由於連接的主機未能響應而建立的連接失敗。我相當肯定客戶端確實知道現在需要的服務器。服務器期望得到什麼樣的響應? – Maydayfluffy

+0

@Maydayfluffy嗯。你有沒有改變你從這些鏈接發送的代碼?這可能是由幾個不同的事情造成的。也許可以打印出服務器在此抓取的IPAddress:'IPAddress ipAddress = ipHostInfo.AddressList [0];'如果它不同於IPv4,請嘗試使用該地址?還要確保客戶端和服務器都設置爲在同一端口上連接。除此之外,它可能是防火牆問題。該端口可能正在被別的東西使用,或者您的防火牆設置可能會阻塞端口上的連接。 –

+0

謝謝!它涉及到防火牆問題。禁用它使一切正常。 – Maydayfluffy

相關問題