C#如何确保所需的UDP数据到达客户端/服务器
本文关键字:数据 UDP 客户端 服务器 何确保 确保 | 更新日期: 2023-09-27 18:22:23
我最近一直在为我正在用C#和XNA为PC制作的2D射击游戏编写UDP服务器,该服务器将在需要时更新和发送世界数据、实体数据、聊天数据等。
最近,当我为玩家创造一种更换武器的方法时,我突然想到了一个问题;如果发送到服务器请求更换武器的数据包丢失,会发生什么情况?这个问题让我想到了另一个问题;如何让客户端和服务器确认接收到某些数据包或数据块?
因此,我想出了以下看起来很简单的解决方案来解决这个问题:
- 服务器发送需要确认的数据包
- 客户端接收数据包并发送确认数据包
- 服务器检查客户端是否确认了数据。如果客户端没有,请重新发送数据
所提出的解决方案看起来很好,但如果在确认数据包丢失或发生任何意外情况,会发生什么?
更好的解决方案是创建一个使用TCP和UDP的服务器和客户端吗;TCP用于需要到达并按顺序/在一次和平中到达的数据,UDP用于需要快速到达并能够处理丢失或错误的数据?
如果TCP/UDP服务器和客户端是更好的选择,那么风险是什么?我将如何实现它?
谢谢。
如果您想确保数据包被传递,则需要使用TCP。UDP不能保证传递,但TCP在协议中内置了这一点。