客户端执行:
connect()
select()
getsockopt()
write()
直到这一刻一切都很好。但是服务器需要几秒钟才能将状态发回,而我希望在没有任何等待阻塞的情况下接收它。那么我应该如何检查服务器的响应是否可用?应该是吗
- 另一个
connect()
,然后是recv()
- 或者只是
recv(sockfd, buffer, LINE_LENGTH-1, MSG_DONTWAIT);
- 或
select()
,然后recv()
我找不到清晰的示例或良好的解释来说明它的外观 客户端。
最佳答案
another connect() and then recv()
当然不是。这将创建另一个连接,并且您将重新开始。
or just recv(sockfd, buffer, LINE_LENGTH-1, MSG_DONTWAIT);
如果数据已经到达,则该方法有效,否则将返回 -1/EAGAIN/EWOULDBLOCK。
or select() and then recv()
那会起作用的。但是,阻塞模式读取的超时值与您在选择中使用的超时值相同,设置为读取超时。
你的问题根本没有意义。您必须在 select()
或阻塞 recv()
中阻塞,直到数据到达。
关于c - 如何检查非阻塞套接字客户端中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28282807/