当UDP套接字读取速度不够快时会发生什么?

时间:2011-04-17 22:09:27

标签: .net sockets udp

可能会发生两件事:

  • 使用一些循环算法
  • 覆盖旧数据
  • 简单地丢弃新数据,将旧数据留在缓冲区中

还是有其他事情发生?

编辑:

我真的很喜欢这方面的实践经验,关于TCP的建议或纯粹的推测也是我可以提供给自己的:)

3 个答案:

答案 0 :(得分:3)

一旦套接字缓冲区已满,较新的数据包开始被丢弃。

答案 1 :(得分:2)

它也取决于硬件缓冲区。如果它已满,那么数据包也会被忽略(=就像它从未到达设备一样,等同于IP堆栈中的软件缓冲区读取速度不够快)。两个缓冲区都可以独立完成。换句话说,您可以在两个级别上丢失数据报。

答案 2 :(得分:1)

简短的回答是你会丢失一些UDP数据包。我希望你选择UDP因为可以忍受一些数据丢失。如果你不能,那么TCP就是答案。

(你可以放松数据,没问题,或者实现你自己的确认协议让数据包重新发送,但TCP就像答案一样)