不从UDP套接字读取整个数据报

时间:2014-04-02 22:56:46

标签: sockets networking udp

当您尝试从套接字recv进入一个不足以存储整个数据报的缓冲区时会发生什么?将尽可能多的数据报存储为recv'd?剩下的会丢掉吗?或者会在随后的recv电话中返回?

有没有办法确保读取整个数据报,无论其大小如何?

2 个答案:

答案 0 :(得分:2)

通常,(在Windows / Linux上),数据报被截断以适应传递的缓冲区,剩余数据将永久丢失。

  

有没有办法确保无论如何都能读取整个数据报   他们的大小?

使用64K缓冲区。 UDP协议确保数据报不能大于数据报,因此无论大小如何,所有成功接收的数据报都将被完全读取。

答案 1 :(得分:0)

这取决于平台。遵循单一Unix规范(例如,Linux)的系统将截断数据报以适应并丢弃其余部分。