【发布时间】:2014-05-18 11:54:17
【问题描述】:
我有一个问题
如何知道客户端是否在指定时间内没有响应服务器?!
我使用的是线程而不是选择功能。
您的帮助将不胜感激:)
谢谢。
【问题讨论】:
标签: c++ tcp timeout winsockets
我有一个问题
如何知道客户端是否在指定时间内没有响应服务器?!
我使用的是线程而不是选择功能。
您的帮助将不胜感激:)
谢谢。
【问题讨论】:
标签: c++ tcp timeout winsockets
您需要查看 [设置套接字选项][1],如下所示:
setsockopt(sockid, SOL_SOCKET, SO_RCVTIMEO,(char *)&tv,sizeof(struct timeval));
完成后,您可以在调用接收和/或发送函数时再次检查SOCKET_ERROR。具体错误码可以通过调用WSAGetLastError获取。
这是潜在的错误代码之一:
WSAEWOULDBLOCK 10035
资源暂时不可用。
此错误是从无法立即完成的非阻塞套接字上的操作返回的,例如当没有数据排队等待从套接字读取时的 recv。这是一个非致命错误,应稍后重试该操作。 WSAEWOULDBLOCK 报告为在非阻塞 SOCK_STREAM 套接字上调用 connect 的结果是正常的,因为必须经过一段时间才能建立连接。
【讨论】: