我如何检查它是否在套接字中可用?

How I can check if it something available in socket?

我用 C 编写了一个简单的应用程序来提供两台计算机之间的连接。我在套接字中同时读取和写入时遇到问题。我可以检查用户是否按 getch() 的任意键,但我不知道如何检查它是否在套接字缓冲区中。当我使用 read() 函数时,它会一直等到套接字中有东西。我想检查套接字缓冲区然后使用 read(),但找不到任何 function/flag 来检查它。也许这个问题有不同的解决方案,也许使用另一个线程来阅读?

您可以使用 sys/ioctl.h 文件的方法 ioctl:

#include <sys/ioctl.h>

...

int count;
ioctl(fd, FIONREAD, &count);

参考学分:This Answer