Networking TCP数据包足够快吗? 我刚刚在C++中制作了一个小型WebStac服务器,以便制作一个简单的电子游戏。我在网上看到,我们应该在视频游戏中使用UDP over TCP。但是HTML5中没有UDP套接字,你认为TCP是否足够快,可以每秒发送所有玩家的大量位置

Networking TCP数据包足够快吗? 我刚刚在C++中制作了一个小型WebStac服务器,以便制作一个简单的电子游戏。我在网上看到,我们应该在视频游戏中使用UDP over TCP。但是HTML5中没有UDP套接字,你认为TCP是否足够快,可以每秒发送所有玩家的大量位置,networking,tcp,udp,Networking,Tcp,Udp,这实际上取决于所涉及的延迟,最重要的是取决于有多少数据包丢失。 如果没有数据包丢失,那么TCP几乎与UDP一样快,除了TCP必须进行连接“握手”以建立初始连接以及返回ACK中的少量开销之外。回答起来很棘手,因为您没有定义“足够快”或“很多”…很好,那么,减少数据包丢失的最佳方法是什么呢?你不能这样做,因为它涉及到所有的中间路由器,甚至是服务器和播放器之间的连接。一个数据包丢失的原因是它的数据已经损坏,可能是由于一条嘈杂的线路。路由器通过查看数据包的“指纹”(CRC校验和)来检测数据包是否有故障,

这实际上取决于所涉及的延迟,最重要的是取决于有多少数据包丢失。
如果没有数据包丢失,那么TCP几乎与UDP一样快,除了TCP必须进行连接“握手”以建立初始连接以及返回ACK中的少量开销之外。

回答起来很棘手,因为您没有定义“足够快”或“很多”…很好,那么,减少数据包丢失的最佳方法是什么呢?你不能这样做,因为它涉及到所有的中间路由器,甚至是服务器和播放器之间的连接。一个数据包丢失的原因是它的数据已经损坏,可能是由于一条嘈杂的线路。路由器通过查看数据包的“指纹”(CRC校验和)来检测数据包是否有故障,如果数据包损坏,则丢弃数据包。在这种情况下,TCP将尝试在UDP刚刚丢弃数据包的位置重新发送数据包。这就是为什么它对职位更新这样的事情很好,因为你可以错过一个,你只需要得到下一个,不需要耽误节目:)希望有了这一洞察力,你可以理解为什么这是一个棘手的问题来回答。