2015-05-31 57 views
0

我一直在試圖設置一個基本場景,其中TcpClient連接到TcpListener在同一臺機器上,但到目前爲止,它只適用於127.0.0.1192.168.X.Y。這裏是我的代碼:TcpClient-如何連接到外部IP地址?

var server = new TcpListener(IPAddress.Any, 51328); 

server.Start(); 

var client = new TcpClient(); 

client.ConnectAsync(IPAddress.Parse("address from whatismyip"), 51328); 

server.AcceptTcpClient(); // hangs indefinitely here 

Console.ReadKey(); 

我得到了我的外部地址從whatismyip,但我不知道如果我做正確。我的程序有些不正確?

+0

你正在打你的路由器防火牆。您需要端口轉發。 – SLaks

回答

0

我假設你正試圖通過互聯網連接?如果你通過像COMCAST這樣的互聯網提供商連接,那麼你可能有一個電纜調制解調器?要做到這樣的事情,你需要在路由器上設置端口轉發。

互聯網只能看到你的電纜調制解調器,所有你對互聯網的請求都會因爲你的電纜調制解調器IP而出去,路由器能夠代表你的192.168.xx地址「路由」信息包,所以按順序要讓您的192.168機器能夠收聽並接受,您必須告訴您的路由器將端口51328上的任何消息轉發給您的機器。

因此,您的代碼將使用192.168.x.xx地址偵聽端口51328,然後設置路由器。要測試它,您需要使用分配給您的調制解調器的公共Internet地址進行連接。

+0

噢,我嘗試登錄到我的Verizon路由器*小時*來啓用端口轉發,但由於某種原因,似乎沒有任何工作。我想我只是使用我的內部地址,因爲它不是真的那麼緊迫。謝謝。 –