将 UDP 数据包从 WAN 发送到本地计算机,而无需在路由器C++上设置端口转发



我有一个具有公共IP的服务器,我想通过WAN将一些UDP数据包数据从服务器发送到路由器后面连接的计算机。 我有家庭连接的公共IP,我有服务器的公共IP,如有必要,我还可以获取MAC地址。 我正在使用Windows套接字。 我知道这一切都可以通过我所做的路由器上的端口转发来完成,并且一切正常,但我想知道如何通过C++代码完成此操作。

utorrent或Skype等应用程序能够通过路由器将数据从WAN直接发送到PC,并发送到我的计算机,而无需端口转发。 只是想知道这一切是如何完成的。

提前谢谢。

对于TCP,你不必做任何事情。只需从PC启动连接即可。路由器将知道必须将响应路由回PC。

UDP很棘手,因为您需要路由器支持。应用程序通常使用 NAT-PMP 来实现此目的。维基百科条目提到了uTorrent和Skype。如果您想查看他们是如何做到的,请在 UDP 端口 5351 上侦听。

还有另一种称为UDP打孔的技术,它需要双方可以直接寻址的第三方。

最新更新