【问题标题】:TcpClient- how to connect to an external IP address?TcpClient-如何连接到外部 IP 地址?
【发布时间】:2015-08-14 05:30:10
【问题描述】:

我一直在尝试设置一个基本场景,其中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 获得了我的外部地址,但我不确定我是否做得正确。我的程序有问题吗?

【问题讨论】:

  • 你正在攻击你的路由器防火墙。您需要端口转发。

标签: c# tcp ip ip-address tcpclient


【解决方案1】:

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

互联网只看到您的电缆调制解调器,您对互联网的所有请求都作为您的电缆调制解调器 IP 发出,路由器能够代表您“路由”数据包进出您的 192.168.xx 地址,因此为了让您的 192.168 机器能够侦听并接受,您必须告诉路由器将端口 51328 上的任何消息转发到您的机器。

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

【讨论】:

  • 哦,好吧;我尝试登录我的 Verizon 路由器 小时 以启用端口转发,但由于某种原因似乎没有任何效果。我想我会使用我的内部地址,因为无论如何它并不是那么紧急。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-15
  • 1970-01-01
  • 1970-01-01
  • 2014-07-31
相关资源
最近更新 更多