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

时间:2015-02-02 16:59:59

标签: c sockets tcp client

客户确实:

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

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

  • 另一个connect(),然后是recv()
  • 或只是recv(sockfd, buffer, LINE_LENGTH-1, MSG_DONTWAIT);
  • select()然后recv()

我无法找到一个明确的例子,或者说明它应该如何看待 客户方。

1 个答案:

答案 0 :(得分:1)

  

另一个connect()然后recv()

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

  

或只是recv(sockfd,buffer,LINE_LENGTH-1,MSG_DONTWAIT);

如果数据已经到达,那将会有效,否则它将返回-1 / EAGAIN / EWOULDBLOCK。

  

或select()然后recv()

那会有效。但是,阻塞模式读取的具有与在select中使用的超时值相同的超时值,设置为读取超时。

你的问题没有意义。您必须阻止数据到达,select()或阻止recv()