我在接收UDP数据包时遇到问题。我的环境在ARMv7上运行Android 2.1。使用C socket编程,我使用recvmsg从内核接收数据包,但偶尔会发生一些数据包丢失事件。发送方和接收方在同一个局域网中,所以毫无疑问,数据包不应该丢失。我通过Wireshark证明了这一点。
然而,在我用recvfrom替换recvmsg以接收数据包之后,数据包丢失事件不再发生。
我确信recvmsg的返回值总是大于0,这意味着不会发生错误。
是否可能只有在使用recvmsg时,才会将某些数据包丢弃在内核空间中?

最佳答案

是的,有可能。UDP不可靠。如果删除UDP数据报会产生问题,那么您的设计就有问题。

07-26 09:30
查看更多