gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 02:43:03 31 4
gpt4 key购买 nike

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

最近我在为玩家创造一种更换武器的方式时突然想到了一个问题;如果发送到服务器的请求更换武器的数据包丢失了,会发生什么情况?这个问题让我想到了另一个问题;我怎样才能让客户端和服务器确认收到某些数据包或数据 block ?

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

  1. 服务器发送需要确认的数据包。
  2. 客户端接收数据包并发送确认数据包。
  3. 服务器检查客户端是否确认了数据。如果客户端没有,重新发送数据。

建议的解决方案看起来不错,但是如果确认包丢失或发生任何意外情况会怎样?

解决此问题的更好方法是创建一个使用 TCP 和 UDP 的服务器和客户端;其中 TCP 用于需要到达那里并按顺序/和平到达的数据,而 UDP 用于需要快速到达那里并且可以处理丢失或错误的数据?

如果 TCP/UDP 服务器和客户端是更好的选择,风险是什么?我将如何实现?

谢谢。

最佳答案

如果你想确保数据包被传送,你需要使用 TCP。 UDP 不保证交付,但 TCP 已将此内置到协议(protocol)中。

关于C# 如何确保所需的 UDP 数据到达客户端/服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9141294/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com