我如何检查它是否在套接字中可用?
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
我用 C 编写了一个简单的应用程序来提供两台计算机之间的连接。我在套接字中同时读取和写入时遇到问题。我可以检查用户是否按 getch()
的任意键,但我不知道如何检查它是否在套接字缓冲区中。当我使用 read()
函数时,它会一直等到套接字中有东西。我想检查套接字缓冲区然后使用 read()
,但找不到任何 function/flag 来检查它。也许这个问题有不同的解决方案,也许使用另一个线程来阅读?
您可以使用 sys/ioctl.h
文件的方法 ioctl
:
#include <sys/ioctl.h>
...
int count;
ioctl(fd, FIONREAD, &count);
参考学分:This Answer