我正在尝试创建一个同时使用 TCP 和 UDP 的服务器和客户端。服务器在 LAN 设置中运行良好,但在通过 WAN 传输时未接收到 UDP 消息。我相信这是因为用于发送数据的 UDP 套接字没有在 NAT 表中保留足够长的时间来返回任何信息。有没有办法让 UDP 端口在路由器中保持打开(没有端口转发)或使用与已连接的 TCP 连接相同的 UDP 端口?提前致谢。
2037 次
1 回答
3
如果您没有收到任何流量,则可能只是被防火墙阻止了。在这种情况下,它不是关于转发,而是关于打开端口。
一旦通过 NAT 打了一个洞,大多数(如果不是全部)NAT/防火墙设备将允许双向的 UDP 流量。也就是说,如果我的笔记本电脑位于 NAT/防火墙后面,将 UDP 数据包发送到 Internet,我的 NAT/防火墙将允许将 UDP 流量返回到原始端口号。我经常使用 UDP,我的经验是这是规则,很少有例外。
请记住,虽然 UDP 数据包不能保证被传送。
您的客户端是否在 NAT 后面?客户端发送的任何数据包都会到达服务器吗?是服务器到客户端方向的问题吗?
如果您对 UDP 和 TCP 使用相同的端口号,这不会改变这种情况。您不能搭载 TCP 连接,因为它是不同的协议。
于 2011-08-11T05:49:42.647 回答