Windows TCP套接字超时C ++

时间:2014-04-06 09:18:50

标签: c++ tcp timeout winsockets

我有一个问题

如何知道客户是否在指定时间内没有响应服务器?!

我正在使用线程而不是选择功能。

非常感谢您的帮助:)

谢谢。

1 个答案:

答案 0 :(得分:1)

您需要查看[设置套接字选项] [1],如下所示:

setsockopt(sockid, SOL_SOCKET, SO_RCVTIMEO,(char *)&tv,sizeof(struct timeval));

完成后,您可以在调用接收和/或发送功能时再次检查SOCKET_ERROR。可以通过调用WSAGetLastError来获取特定的错误代码。

这是其中一个潜在的错误代码:

  

WSAEWOULDBLOCK   10035

     

资源暂时无法使用。

     

此错误从无法立即完成的非阻塞套接字上的操作返回,例如当没有数据排队等待从套接字读取时的recv。这是一个非致命错误,应该稍后重试该操作。将WSAEWOULDBLOCK报告为在非阻塞SOCK_STREAM套接字上调用connect的结果是正常的,因为必须经过一段时间才能建立连接。