即使UDP是无连接的,我也希望在客户端和服务器之间建立某种连接。 问题是,一旦服务器从客户端收到了一些东西,我唯一可以发送的答案就是使用客户端的IP和端口。
而且......在几乎每种情况下,这都不是客户端的IP,因为客户端在Internet上没有IP:只有它的路由器才有。 我想知道如何将数据发送回客户端,即使他在路由器后面。
我开始相信这是不可能的......但它必须是可能的:不要告诉我视频游戏仅使用UDP将数据从客户端发送到服务器!
答案 0 :(得分:2)
防火墙后面的UDP选项:
答案 1 :(得分:0)
只需通过同一套接字发送回客户端,NAT就会自动解析并将其传递给实际的框。
答案 2 :(得分:0)
您的路由器会注意到它重写了一个外发数据包,看起来好像它来自路由器上的一个端口,并记住这一点。如果它接收到同一端口的UDP数据包地址,它会说“哦,我知道在哪里发送它!”并将其转发到原始数据来自网络内部的端口。
通常路由器会记住一段时间的路由,如果它在该端口上没有看到任何内容,则会忘记它们。