什么是可能的UDP数据传输错误?

时间:2011-09-24 15:20:47

标签: sockets udp client-server

我们将开发一款支持互联网多人游戏的游戏。因为它是一个互动游戏,我知道我必须使用UDP来减少连接延迟,但我想知道使用UDP连接提供的包中可能出现的错误是什么?在我看到的任何地方,他们都说UDP提供“尽力交付”,但没有人能给出完整的解释是什么意思。看完一篇文章后,我还有两个问题:

  1. 是否可以发送包并在连接的另一端接收部分包?
  2. 如果您对第一个问题的回答是真的,那么下一个包裹会发生什么?我应该等待剩余的包裹,还是可以假设下一个包裹开始下一次recv来电?
  3. 对于我们的游戏,我认为我们需要每秒发送大约20个字节的4个包。

1 个答案:

答案 0 :(得分:2)

最常见的事情是:一方发送消息,另一方什么都不接收。

  

是否可以发送包并在另一方接收部分包   连接结束?

不是真的,即使消息很大而且它变得支离破碎也没有。与TCP不同,在UDP中,每封邮件都是独立的。你要么完全得到它,要么一无所获。

那么你应该只做recvfrom循环中的事情并处理它们。显然,您应该使您的应用程序不受消息丢失的影响,以便丢失的消息不会使其崩溃。