.NET套接字或端口转发问题?

时间:2012-08-23 23:57:48

标签: .net sockets portforwarding

我现在编写的应用程序存在这个问题。

我正在使用Sockets .NET编写服务器和客户端应用程序。服务器在静态IP为192.168.1.6的计算机上运行。客户端通过LAN连接到该IP地址没有问题。但是,当我将客户端设置为连接到我的WAN IP时,无法建立连接。

当然我立刻想到了端口转发,所以我配置了我的路由器接受我用于应用程序的端口和机器静态IP的传入连接。我甚至检查了端口是否通过portforward.com使用PFPortChecker工具正确转发(它确实如此),但我似乎无法让它工作。

我有什么东西可以在这里俯瞰吗? 我真的希望有人可以帮助我,因为我现在真的拔出了我的最后一根头发......

编辑:

好的,我已将问题缩小到.NET Socket问题 基本上当我尝试连接以下代码(C#)时:

Socket _client;

_client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_client.Connect("XX.XXX.XXX.X", XXXX);

只能在LAN环境中进行连接。 但是,当我在我的机器上运行服务器的实例,并且我尝试使用PFPortChecker工具ping WAN IP和端口时,我实际上在我的服务器中得到响应,并且它开始处理作为新的传入连接客户端。

知道如何修复我的代码以便可以通过WAN建立连接吗?

编辑2:

好的,所以我想出了问题所在。我无法从自己的WAN IP连接到我自己的WAN IP。在另一个网络上,我连接到我的服务器没有问题。

无论如何,谢谢你的麻烦。

2 个答案:

答案 0 :(得分:3)

我首先建议在服务器上运行Wireshark,看看他是否看到了传入的连接。这将确认路由器是否将该端口上的流量转发到该机器。

答案 1 :(得分:0)

192.168.1.6是LAN子网...您的外部IP是不同的。如果端口转发很好,那可能是问题所在。谷歌“什么是我的IP”,它应该告诉你你的外部IP地址