2012-11-13 149 views
0

我正在創建一個TcpListener,並且我希望來自其他計算機的客戶端能夠加入我的偵聽器。C#TcpListener外部IP

我已經閱讀並理解我必須做端口轉發,但它對我沒有任何意義 - 當我發佈我的應用程序時,我希望其他人創建此監聽器,並且我無法說出他們做端口轉發。

有沒有可能創建一個TcpListener,客戶端將能夠加入沒有端口轉發? 謝謝。

+0

你在哪裏看過你有做端口轉發? –

+0

歡迎使用stackoverflow。這個問題可能會得到更好的答案,如果你更清楚一點,我不確定你在問什麼。 – brentonstrine

回答

1

那麼,我們先嚐試清除一些問題。

使用端口轉發的主要原因是因爲您在內部網絡前有NAT路由器。要設置端口轉發,請指示NAT路由器將流量轉發到公共接口上的某個端口,轉發到內部計算機上的端口。

如果您沒有NAT路由器,則不需要端口轉發。

今天很多路由器都支持UPnP,這是一種技術,可以請求路由器創建特定的端口。一個合適的庫可以使用ManagedUPnP

但是,您仍然需要弄清楚路由器的公共IP以及您打開了哪個端口並將其傳送到其他應用程序。

如果您的路由器不允許UPnP或其他防火牆規則就位,則無法正確設置端口轉發。

0

您可以在PC上創建服務器應用程序和轉發端口。客戶端應用程序(您將發佈此應用程序)將只連接到您的電腦,以便他們可以在NAT上。你也可以將你的應用程序與一些php/asp頁面結合起來,但它取決於你想發送的數據。如果它是某種類型的PC統計信息,例如正常運行時間,硬件等,則只需在客戶端應用程序中使用http查詢即可創建網站腳本(例如mypage.com/?uptime=100 & ram = 2gb & hash = xxxx等。 )

0

只有服務器(接受TCP請求的計算機)需要轉發端口。

通用模型是您(服務的開發人員/生產者)承載服務器。然後,客戶(訂閱您的服務的用戶)使用IP或URL連接到您的服務。如果您的服務位於防火牆之後(您的計算機和互聯網調制解調器之間有路由器),則必須轉發該端口。您可能還必須在Window的防火牆中打開端口,但我希望您已經完成了這一步。在這種模式下,客戶不必對路由器做任何事情(就像使用網絡瀏覽器一樣)。

如果您正在製作一個產品,您的客戶託管服務,那麼他們將不得不處理端口問題。在這種情況下,您可以嘗試ManagedUPnP,例如Albin Sunnanbo建議或將其重定向到解釋如何設置端口轉發的許多站點之一。