无法使用Internet IP地址连接到本地计算机IP地址

时间:2012-03-29 20:20:27

标签: c# sockets tcp

我上个月花了一个多人游戏。我只在一台机器上测试它,使用127.0.01:9051作为IPEndPoint。

我将IP地址更改为WAN IP,在路由器上配置了端口转发,配置了我的软件防火墙等......但是,它没有连接。

我已使用this site检查端口是否已打开。结果:端口真的打开了。

另外,当我从该网站检查端口时,我的服务器接收数据包就好了;但是,当我从自己的机器连接时...它没有收到任何东西。

我已经将所有内容都归结为基础知识,以确保我的代码不会出现问题。

此基本代码不起作用:

IPEndPoint iep = new IPEndPoint(IPAddress.Parse("XXX.XXX.XXX.XXX"), 9051);
TcpClient client = new TcpClient();
client.Connect(iep);

非常感谢任何想法。

4 个答案:

答案 0 :(得分:3)

如果您尝试连接到Forwarded(outsideIP)的IP到同一台机器(insideIP),它将无法正常工作。很少有企业防火墙,也没有消费者设备(我知道)将从内到外路由数据包并将其转换回来。

[互联网] - outsideIP [路由器/防火墙] insideIP1 - insideIP2 [电脑]

在这种情况下,来自 insideIP(X)的数据包将无法连接到 outsideIP

答案 1 :(得分:0)

尝试查看您是否可以通过端口9051远程登录到您的WAN IP。当您从网络内部连接到其WAN时,路由器不太喜欢它。

答案 2 :(得分:0)

您可以使用Dyndns或外部世界的其他服务连接到您的服务器,并将相同的名称放入解析为127.0.0.1的主机文件中,以便您可以在内部进行连接。

答案 3 :(得分:0)

您的客户端和服务器(在失败的测试中都是同一台机器)是否使用相同的端点ip / port?您一次只能绑定一个端口。尝试使用两个端口,一个用于服务器,一个用于服务器输出(clinet in)。这样他们就不会发生冲突。使用Telnet检查您是否可以连接到您正在使用的IP /端口和Netstat以检查它们是否已被使用。