TcpClient-如何连接到外部IP地址?

我一直在尝试设置一个基本场景,其中TcpClient连接到同一台机器上的TcpListener ,但到目前为止它只适用于127.0.0.1192.168.XY 这是我的代码:

 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得到了我的外部地址,但我不确定我是否正确地做了。 我的程序有什么不对吗?

我假设你试图通过互联网连接? 如果您通过某些Internet提供商(如COMCAST)连接,那么您可能有一个电缆调制解调器? 要做到这一点,您需要在路由器上设置PORT转发。

互联网只看到你的有线调制解调器,所有你的互联网请求都是你的有线调制解调器IP,路由器能够代表你“路由”你的192.168.xx地址的数据包,所以为了你的192.168机器能够听取并接受您必须告诉您的路由器将端口51328上的任何消息转发到您的机器。

因此,您的代码将使用192.168.x.xx地址侦听端口51328,然后设置路由器。 要测试它,您将使用分配给调制解调器的公共Internet地址进行连接。