我有一个关于recv(C,Android)的问题。

是否可以保证recv在返回时返回完整的UDP数据报?

就我而言,我正在使用recv从套接字读取RTP数据包。每个RTP数据包的预期长度为172(有效负载为160字节, header 为12)。但是,我不确定我是否可以保证recv返回数据时得到完整的172个字节。

有人可以确认/评论吗?

最佳答案

对于每个POSIX,recv返回整个UDP数据包,除非发生错误或对于整个数据包而言缓冲区太小。您可以通过设置MSG_TRUNC标志来检测到这一点,这会导致recv返回帧的实际数据长度,您可以将其与缓冲区大小进行比较。

09-07 05:54
查看更多