如何连接客户端和服务器?

时间:2010-12-10 21:00:34

标签: c++ udp

即使UDP是无连接的,我也希望在客户端和服务器之间建立某种连接。 问题是,一旦服务器从客户端收到了一些东西,我唯一可以发送的答案就是使用客户端的IP和端口。

而且......在几乎每种情况下,这都不是客户端的IP,因为客户端在Internet上没有IP:只有它的路由器才有。 我想知道如何将数据发送回客户端,即使他在路由器后面。

我开始相信这是不可能的......但它必须是可能的:不要告诉我视频游戏仅使用UDP将数据从客户端发送到服务器!

3 个答案:

答案 0 :(得分:2)

防火墙后面的UDP选项:

  1. 防火墙/ NAT将UDP数据包转发到特定计算机的明确规则。
  2. UPnP自动设置规则(从客户端)
  3. UDP的自动返回路径 - NAT会记住端口和IP地址,并为UDP数据包创建返回规则。

答案 1 :(得分:0)

只需通过同一套接字发送回客户端,NAT就会自动解析并将其传递给实际的框。

答案 2 :(得分:0)

您的路由器会注意到它重写了一个外发数据包,看起来好像它来自路由器上的一个端口,并记住这一点。如果它接收到同一端口的UDP数据包地址,它会说“哦,我知道在哪里发送它!”并将其转发到原始数据来自网络内部的端口。

通常路由器会记住一段时间的路由,如果它在该端口上没有看到任何内容,则会忘记它们。