C#如何确保所需的UDP数据到达客户端/服务器?

时间:2012-02-04 13:41:33

标签: c# tcp xna udp reliability

我最近为C#和XNA for PC制作了一个用于2D射击游戏的UDP服务器,它将在需要时更新并发送世界数据,实体数据,聊天数据等。

当我为玩家改变他们的武器创造一种方式时,最近出现了一个问题。如果在发送给请求武器更换的服务器的数据包丢失的情况下会发生什么?这个问题让我想到了另一个问题;如何让客户端和服务器确认接收某些数据包或数据块?

所以,我提出了以下简单的解决方案来解决这个问题:

  1. 服务器发送需要确认的数据包。
  2. 客户端收到数据包并发送确认数据包。
  3. 服务器检查客户端是否确认了数据。如果客户端没有,请重新发送数据。
  4. 建议的解决方案看起来相当不错,但如果在确认数据包丢失或发生任何意外情况的情况下会发生什么?

    这个问题的更好解决方案是创建使用TCP和UDP的服务器和客户端;其中TCP用于需要到达那里并按顺序到达的数据,以及用于需要快速到达并能应对丢失或错误的数据的UDP?

    如果TCP / UDP服务器和客户端是更好的选择,有哪些风险以及我将如何实施?

    感谢。

1 个答案:

答案 0 :(得分:1)

如果要确保传送数据包,则需要使用TCP。 UDP不保证传送,但TCP已将此内置到协议中。