我有一个接收连续数据流的服务器。与从套接字多次读取相反,我想通过一次系统调用 read()
来读取套接字接收缓冲区中的全部数据。
当然,我可以传递一个大缓冲区,read()
会尝试用所有可用数据填充它。但这会浪费大量内存,因为大多数情况下 malloc 的缓冲区会比套接字上可用的实际数据大。有没有办法查询套接字上的可用数据?
最佳答案
是的:
#include <sys/ioctl.h>
...
int count;
ioctl(fd, FIONREAD, &count);
https://stackoverflow.com/questions/14047802/