如何检查非阻塞套接字客户端中的数据

How to check data in non-blocking sockets client

客户做了:

connect()
select()
getsockopt()
write()

直到这一刻一切都很好。但是服务器需要几秒钟才能发回状态,我想在等待时没有任何阻塞地接收它。那么我应该如何检查来自服务器的响应是否可用?应该是

我找不到一个清楚的例子或很好的解释它应该如何看待 客户端。

another connect() and then recv()

当然不是。这将创建另一个连接,您将重新开始。

or just recv(sockfd, buffer, LINE_LENGTH-1, MSG_DONTWAIT);

如果数据已经到达,那将起作用,否则它将 return -1/EAGAIN/EWOULDBLOCK.

or select() and then recv()

那行得通。但是,阻塞模式读取的超时值与您在 select 中使用的超时值相同,设置为读取超时。

你的问题没有道理。您必须阻塞直到数据到达,select() 或阻塞 recv().