2012-01-11 15 views
0

我想了解c#中的網絡是如何工作的,所以我學會了如何使用TCP服務器和客戶端。 唯一的問題是,它只在兩臺計算機連接到同一網絡時才起作用。c#中的網絡,而不是lan

即使它們不是,我如何使它們通信?

+0

他們都連接到互聯網? :) – 2012-01-11 21:07:43

回答

3

只要在它們之間存在路由,TCP/IP套接字應該在任何兩個端點之間工作。如果他們之間沒有路由,那麼你在談論的情況下,有兩個單獨的斷開的網絡。在這種情況下,你需要一些東西來連接兩個網絡。

如果您正在使用TCP/IP服務器/客戶端通信,並且計算機位於不同的網絡上,並且它們有連接它們的路由並且它們無法通信,那麼您應該查看防火牆設置和其他網絡設置,以確保TCP/IP數據包從一個網絡能夠到達另一個網絡。

請確保您在客戶端嘗試連接到服務器時使用正確的IP地址。如果您的服務器IP地址爲10.0.0.5,那麼在端口4823上偵聽時,嘗試使用服務器IP地址10.0.0.5和端口4823從客戶端telnet到該IP地址。如果連接,通常意味着您的設置正確。

從命令提示符:telnet 10.0.0.5 4823

+1

正是我要寫的。我會打賭美元甜甜圈,所有湯姆需要做的就是在他的服務器端點上設置端口轉發,並使用公共IP而不是私有IP,他的程序將正常工作。 – 2012-01-11 21:07:25

+0

另一件事是確保他指定了正確的外部IP地址。 – 2012-01-11 21:17:31

+0

好的,我在這裏查看了我的公共IP:www.mypublicip.com。 客戶端連接如下: Client.Connect(IPAddress.Parse(「109.64.200.92」),8001); (IP是結果) 服務器仍然無法識別.. – 2012-01-11 21:23:30

0

TCP中的通信使用IP地址完成。因此,即使客戶端和服務器在指定服務器的IP地址的情況下不在同一網絡中,客戶端也可以與其進行通信(假設客戶端駐留的網絡配置正確並且知道如何到達服務器的網絡)。您也可以使用DNS服務並提供服務器的FQDN而不是IP地址。客戶端網絡上的DNS服務器會將服務器的FQDN解析爲IP地址。