当您尝试从套接字recv
进入一个不足以存储整个数据报的缓冲区时会发生什么?将尽可能多的数据报存储为recv
'd?剩下的会丢掉吗?或者会在随后的recv
电话中返回?
有没有办法确保读取整个数据报,无论其大小如何?
答案 0 :(得分:2)
通常,(在Windows / Linux上),数据报被截断以适应传递的缓冲区,剩余数据将永久丢失。
有没有办法确保无论如何都能读取整个数据报 他们的大小?
使用64K缓冲区。 UDP协议确保数据报不能大于数据报,因此无论大小如何,所有成功接收的数据报都将被完全读取。
答案 1 :(得分:0)
这取决于平台。遵循单一Unix规范(例如,Linux)的系统将截断数据报以适应并丢弃其余部分。