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

TcpClient- how to connect to an external IP address?

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

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

我假设您正在尝试通过互联网连接?如果您通过 COMCAST 等 Internet 提供商连接,那么您可能有电缆调制解调器?要执行此类操作,您需要在路由器上设置端口转发。

互联网只能看到你的电缆调制解调器,你对互联网的所有请求都会作为你的电缆调制解调器 IP 发出,路由器能够 "route" 数据包进出你的 192.168.x.x 地址代表你,所以为了让你的 192.168 机器能够收听和接受你必须告诉你的路由器将端口 51328 上的任何消息转发到你的机器。

因此您的代码将使用 192.168.x.xx 地址侦听端口 51328,然后设置路由器。要对其进行测试,您可以使用分配给调制解调器的 public 互联网地址进行连接。