无法使用互联网IP地址连接到本地机IP地址
我已经花了上个月编写多人游戏。我只在一台机器上测试过,使用127.0.01:9051作为IPEndPoint。无法使用互联网IP地址连接到本地机IP地址
我将IP地址更改为我的WAN IP,在我的路由器上配置了端口转发,配置了我的软件防火墙等等。但是,它没有连接。
我检查过端口是否使用this site打开。结果:港口真的开放。
此外,当我检查该网站的端口时,我的服务器接收数据包就好了;然而,当我从我自己的机器连接...它没有收到任何东西。
我已经把所有东西都分解了,以确保它不是我的代码的问题。
这个基本代码不起作用:
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("XXX.XXX.XXX.XXX"), 9051);
TcpClient client = new TcpClient();
client.Connect(iep);
任何想法非常赞赏。
如果您试图连接到被转发的IP(outsideIP)到同一台计算机(insideIP),它将无法工作。很少有企业防火墙和没有消费设备(我知道)将路由从里面出来一个包,它早在翻译
[互联网] - outsideIP [路由器/防火墙] insideIP1 - insideIP2 [计算机]
在这种情况下,从insideIP(X)分组将不能够连接到outsideIP。
试试看你是否可以通过端口9051 telnet到你的WAN IP上。当你从网络内部连接到WAN时,路由器并不喜欢它。
它不允许我自己ping =) – 2012-03-29 20:31:19
Ping也不是TCP。 Ping是ICMP(没有端口的概念)。 – 2012-03-29 20:32:03
k我现在没有启用telnet,即时通讯只是尝试从另一台机器连接,看看它是否工作。感谢您的帮助 – 2012-03-29 20:33:23
您可以使用Dyndns或外部世界的其他服务连接到您的服务器,并将相同的名称放入解析为127.0.0.1的主机文件中,以便您可以在内部进行连接。
感谢您的建议 – 2012-03-29 20:34:09
您的客户端和您的服务器(在您的失败测试中的同一台计算机)是否使用相同的端点ip /端口?一次只能绑定一个端口。尝试使用两个端口之一服务器在一个服务器出(clinet中)。这样他们就不会发生冲突。使用Telnet检查您是否可以连接到您正在使用的IP /端口以及Netstat以检查它们是否已被使用。
所以基本上我需要为自己创建一个单独的客户端,使用127.0.0.1连接? – 2012-03-29 20:28:45
@Jeff - 或者你可以把端点地址放在一个配置文件中。 – 2012-03-29 20:29:29
@Jeff是的,你需要在一台或多台计算机上运行两个应用程序。 – 2012-03-29 20:30:12