请问连接服务器超时怎么实现?
请问连接服务器超时怎么实现?
楼主B2China(海陆空天电磁)2004-03-25 14:24:56 在 VC/MFC / 网络编程 提问用Winsocket的connect函数实现连接数据库,但是置连接超时怎么实现? 问题点数:20、回复次数:3Top
1 楼yangang000(风)回复于 2004-03-25 14:32:31 得分 10
int setsockopt (
SOCKET s,
int level,
int optname,
const char FAR * optval,
int optlen
);
Top
2 楼Semigod()回复于 2004-03-25 15:20:44 得分 10
我记得connect 的超时设置是没法用setsockopt来设置的,所以以前写了这样的代码实现,
DWORD dwWaitRes = WSA_WAIT_FAILED;
ATLVERIFY(WSAResetEvent(m_hEvent));
//ioctlsocket(sckSocket, FIONBIO, &arp); // 进入none-blocking mode
// WSAEventSelect()会自动将socket设置为none-blocking方式
// 因此,不需要再调用ioctlsocket来设置
ATLVERIFY(WSAEventSelect(sckSocket, m_hEvent, FD_CONNECT) == 0);
// 连接服务器
if (connect(sckSocket,(const struct sockaddr *)&sinServer,sizeof(sinServer))==SOCKET_ERROR
&& WSAGetLastError() == WSAEWOULDBLOCK)
dwWaitRes = WSAWaitForMultipleEvents(1, &m_hEvent, TRUE, m_nSendTimeout, FALSE);
WSAEventSelect(sckSocket, m_hEvent, 0);
unsigned long arp = 0;
ioctlsocket(sckSocket, FIONBIO, &arp); // 进入blocking mode
这段代码在我的程序里是正常工作的Top
3 楼B2China(海陆空天电磁)回复于 2004-03-25 16:05:01 得分 0
Semigod() ,
你给出的例子一定有上下文吧?
能给一个简单点的实用例子吗?Top
-
相关文章
2秒记住本站域名
玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的readygo.com.cn
