繁体   English   中英

单次调用非阻塞recvfrom

[英]Single call to non-blocking recvfrom

我只是想了解非阻塞recvfrom是如何工作的? 我正在编写一个应用程序,它以某个以大约10 Mbps速度发送数据的设备进行通信。 我已经创建了连续调用recvfrom的infinte循环并剥离了标头并在一些临时缓冲区中复制了其余的消息。 现在我的问题是:

单次调用非阻塞recvfrom(考虑到有数据可用)只返回一个数据包吗? 或者单个recvfrom也可能返回多个连接数据包?

UPDATE

是的,我正在使用无连接套接字(UDP)。

在UDP的情况下只有一个数据报。 连接数据包将违反该协议所做的(少数)基本保证之一:保存发送的数据报之间的边界。

Linux的最新版本具有recvmmsg ,允许您为每个系统调用接收多个数据报。

recvfrom()最多返回一个数据报。

有一个特定于Linux的调用recvmmsg()可以在一次调用中接收多个数据报。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM