在连接服务器时,有时长时间连接不上,就一直阻塞在那里不动了,有时是接收数据时也会出现这种问题。
我想用定时器来处理一下,比如连接阻塞超过20秒我就再连接一次,如果还不行就不连了,请问怎么处理?
我的连接函数为ConnectServer(strIp,nPort);
我想用定时器来处理一下,比如连接阻塞超过20秒我就再连接一次,如果还不行就不连了,请问怎么处理?
我的连接函数为ConnectServer(strIp,nPort);
解决方案 »
- VC2005有没有只读代码编辑模式,专门阅读代码。
- C++测试引用的相等性
- MSDN下的示例程序
- 也问个COMBO问题,重绘的COMBO(DOWNLIST),有SetItemDisable设置某ITEM为DIS状态,比如说第二项item=2(其实是第三项),画的方面都没问题,问题是当选择item=2的时候,会把item=2的内容选进编辑框或静态框
- 关于ContorlBar停靠问题?
- 困惑,一个C类地址的子网掩码255.255.255.192到底能划分几个子网?
- 小弟初学vc,有几个菜鸟问题 !请指教!
- 如何使用dll中的菜单
- 请教内存方面的问题,高手都进来(很难搞定的问题)
- 获取下载网页excel数据文件乱码问题。求助各位大侠。
- 被辞,超级郁闷---
- 如何设置clistbox的显示焦点
ConnectionTimeOut.tv_sec = 8;
ConnectionTimeOut.tv_usec = 0;
while(TRUE)
{
iRet = connect(ClientSocket, (LPSOCKADDR)&ssin, sizeof(SOCKADDR_IN));
if (iRet == SOCKET_ERROR)
{
if (WSAGetLastError() != WSAEWOULDBLOCK)
{
break;
}
}
else
{
IsFlag = TRUE;
break;
} FD_ZERO(&fdwrite);
FD_ZERO(&fdexcept);
FD_SET(ClientSocket,&fdwrite);
FD_SET(ClientSocket,&fdexcept);
select(0,NULL,&fdwrite,&fdexcept,&ConnectionTimeOut); if (FD_ISSET(ClientSocket,&fdexcept)) // 出现错误
{
break;
} if (FD_ISSET(ClientSocket,&fdwrite)) // 成功连接上
{
break;
}
else
{
break;
}
}
以上代码就是8秒超时连接
DWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds ); 函数的第二个参数就是你要设置的超时时间,通过判断WaitForSingleObject的返回值就可以知道是超时还正常返回了