0

我现在正在编码的应用程序有这个问题。

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

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

有什么我在这里忽略的吗?我真的希望有人能帮助我,因为我现在真的要拔掉最后一根头发了……

编辑:

好的,我已将问题缩小到 .NET 套接字问题。
基本上当我尝试连接以下代码(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。在另一个网络上,我连接到我的服务器没有问题。

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

4

2 回答 2

3

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

于 2012-08-24T00:01:36.487 回答
0

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

于 2012-08-24T00:04:52.010 回答