2012-09-06 126 views
0

好吧,我剛剛開始使用c#搞亂TCP,並且我已經成功地設置了一個服務器,可以發送'Hello World'消息,無論如何,我一直在這樣做本地(因爲兩臺筆記本電腦都連接到相同的路由器),我只需使用192.168號碼進行連接。但它的目的是通過互聯網工作,並且路由器的IP地址對於兩臺計算機來說顯然是相同的,如果我鍵入路由器IP地址,它不起作用,並且如果我鍵入絕對贏得的192.168號碼, t在互聯網上工作......那麼我使用什麼IP,或者什麼是更好的解決方案?TCP服務器IP客戶端連接問題

這裏的代碼行,如果它的事項

var client = ScsClientFactory.CreateClient(new ScsTcpEndPoint("192.168.1.142", 10085)); 

其中192.168.1.142是服務器,筆記本電腦的本地IP開始它

和10085是端口。

+0

首先,什麼你知道不同的網絡,角色路由器在這個場景和NAT中扮演的角色嗎? –

+0

最小=/... –

+0

我看到你已經有了正確的答案。不過,我認爲給你一個關於這些網絡概念的簡單解釋會很有用=) –

回答

2

您必須配置路由器將任何傳入連接轉發到端口10085到本地IP地址。然後任何人都可以使用您的外部IP地址進行連接。

每個路由器都有它自己的配置系統,所以你必須在谷歌搜索「端口forwading」和你的路由器模型。

+0

工作過,謝謝:D –

+0

很高興幫助你 –

1

這取決於你想要達到什麼樣的目標。例如,如果您正在製作聊天應用程序。客戶端(在路由器後面)可以說它的本地IP是192.168.1.111,路由器IP是80.120.78.100。客戶端將連接到服務器。

一旦建立連接,發送回客戶端並不重要,因爲客戶端和服務器之間的連接已經打開,所以服務器只會使用相同的連接。路由器會計算出「路由」數據包的位置,通常你不需要知道的東西。

但是,如果您的服務器是尋找客戶的服務器,那就不同了。

0

我會盡量解釋一下關於網絡,但你必須搜索關於它

基本上,瞭解一個IP掩碼,如192.168.1.0爲一個網絡。路由器的作用是連接不同的網絡,這就是路由器通常有2個端口,WAN(廣域)和LAN(本地)的原因。

有了這個概念,你可以看到互聯網作爲一個由各種ISP連接而成的大型網絡。每個ISP都有一個到它的網絡的路由器,另一個給你一個互聯網連接。最後,你家裏有一臺路由器。所以,從這裏,你可以理解有3個網絡連接:你的家,你的ISP和互聯網。

爲了您能夠連接到我家的電腦,我必須讓這臺電腦可以從網上下載,我必須發佈它。我通過在我的路由器上設置了一個NAT(網絡區域轉換)。這個NAT說「任何來自互聯網的端口12345,轉發到端口80的192.168.1.10(我的服務器)」。

這是一個極其簡單的解釋,好嗎?


現在,讓我們後退一大步。如果您的網絡上有另一臺計算機,則可以測試您的程序是否採用了更簡單的方法。

  1. 連接兩臺電腦給你局域網,所以他們將獲得類似的IP地址。讓我們假設他們是192.168.1.10192.168.1.20
  2. 10運行服務器和20禁用所有類型的防火牆(Windows和第三方)
  3. 運行客戶端,並嘗試連接到服務器