UDP打孔:无法从服务器发送到客户端
Posted
技术标签:
【中文标题】UDP打孔:无法从服务器发送到客户端【英文标题】:UDP Hole-punching: cannot send from server to client 【发布时间】:2020-11-13 16:58:38 【问题描述】:从服务器 A 开始(通过静态 IP 全局可访问),我将 UDP 套接字绑定到 0.0.0.0:25000。
然后在(住宅)NAT 后面使用客户端 A,我将 UDP 套接字绑定到 0.0.0.0:25000。然后客户端-A 向服务器-A 发送一个数据包。
Server-A 接收数据包。服务器-A 记录远程套接字 K,数据包从那里被 NAT'ed。服务器-A 向 K 发送数据包,目的是让 NAT 将数据包转发给客户端-A。
但是,客户端 A 没有收到数据包。在 NAT 上,当我在端口 25000 上为 UDP 启用端口触发时,它就可以工作了。但是,在制作 p2p 应用程序时,我宁愿避免要求客户端进入路由器设置以使程序运行。如何在防火墙上打一个洞,使通信是双向的?
【问题讨论】:
【参考方案1】:如果您的路由器/NAT 设备支持 NAT-PMP 或 UPNP,那真的很容易。您只需要实现协议并打开特定端口即可使用。如果没有,那么您可能需要使用 ICE。
【讨论】:
以上是关于UDP打孔:无法从服务器发送到客户端的主要内容,如果未能解决你的问题,请参考以下文章