Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
单次调用非阻塞recvfrom_C_Sockets - Fatal编程技术网

单次调用非阻塞recvfrom

单次调用非阻塞recvfrom,c,sockets,C,Sockets,我只是想了解非阻塞recvfrom是如何工作的?我正在编写一个应用程序,该应用程序与某个设备通信,该设备以大约10 Mbps的速度发送数据。我已经做了infinte循环,它依次调用recvfrom,去掉头并将消息的其余部分复制到某个临时缓冲区中。现在我的问题是: 非阻塞recvfrom的单个调用(考虑到有可用数据)是否只返回一个数据包?或者单个recvfrom也可能返回多个连接的数据包 更新 是的,我使用的是无连接套接字(UDP)。在UDP的情况下,只有一个数据报。连接数据包将违反该协议(为数不

我只是想了解非阻塞recvfrom是如何工作的?我正在编写一个应用程序,该应用程序与某个设备通信,该设备以大约10 Mbps的速度发送数据。我已经做了infinte循环,它依次调用recvfrom,去掉头并将消息的其余部分复制到某个临时缓冲区中。现在我的问题是:

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

更新
是的,我使用的是无连接套接字(UDP)。

在UDP的情况下,只有一个数据报。连接数据包将违反该协议(为数不多)的基本保证之一:即发送的数据包之间的边界被保留

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

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


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

按数据包。。。你在使用UDP吗?