socket编程,如何使connect()30秒超时???? 要么放个timer来计时,超过就close 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以通过一个API直接设置沿时就可以了,好象是SetOpt什么的!你查MSDN肯定有的! 能不能具体一些?timer好像不行,因为connect是阻塞的!!好象setsockopt可以,不知道具体应该怎样用?好像用SO_TTL的选项? 用CAsyncSocket自己处理OnConnect()就ok了. 我的客户端程序connect()到一个10.0.0.1的时候,connect就阻塞在那里,好像很长时间都不返回?我应该怎样设置超时? 我觉得用CAsyncSocket 的生成类好一些,CSocket好像自己内部封装的线程有问题,经常会死机,用CAsyncSocket是非阻塞,::OnConnect()处理连接,设个timer计时就好了。setsockopt()也可以设的,但有时候还是会死机。 我就想知道如何用socket的api函数设,如setsockopt里面的选项,可是我现在很急呀,我没用mfc的类,这个问题应该很常见的呀! ok,setsockopt例子如下;int rcvtimeo = 30000 ; // 30 sec insteadof 45 as defaultsetsockopt( s , SOL_SOCKET , SO_RCVTIMEO , (const char *)&rcvtimeo , sizeof(rcvtimeo) ); 不对,SO_RCVTIMEO 只影响write recv等等, 跟connect无关! 去www.vchelp.net看看,里面好像有一个源程序:可设置连接时限的套接字类(名字记不清楚了),在规定的时间内连接服务器不上就会返回。不过我在自己的程序中用了一下,第一次能很快返回,但以后仍要75秒左右。 CurrentTime = GetTickCount(); 看看windows网络编程这本书吧。一般来说,用套接字api直接connect的时候,线程或者进程是阻塞的,这个时候很难响应OnTimer消息,所以用设Timer的方法是行不通的。setsocketopt也没有什么用。一个方法是强制将阻塞套接字转为非阻塞方式,然后再判断connect的返回值,如果为WSAEWOULDBLOCK就等,直到30秒。最后再将套接字转为阻塞方式。但是这种方法我试过,好象也行不通。因为总是返回上述错误码,根本就没有成功的机会。此外的方法是利用select函数进行控制,我没有试过,但你可以试一下,如果调通了告诉我一声。具体的源码好象在windows网络编程这本书上。 我同意zhang_qxian(blueman2001)的说法,我在unix下就是这样调通可以定制n秒连接不上就返回,但是nt下我用IOCtl() 将socket强制设成非阻塞的,但是调用connect()仍然要等默认的时间才返回失败,按照道理应该是无论连接成功与否都立即返回,在根据返回的值进行判断。不知道是否用IOCtl()设置非阻塞是否正确,如果不正确应该用什么方法设置为非阻塞。this->IOCtl(FIONBIO,(unsigned long*)&l_iFlag);[CSocket类] http://www.codeguru.com/network/CTimeoutSocket.html 高分求助,不规则对话框更换不同背景图 点击按钮出现窗口,当鼠标不在新窗口时,窗口自动消失,如何实现? 十万火急:VC调用 webService 认证的问题 vc2005怎样播放远程视频? 刚用VC++ 2008,错误列表不提示错误了,应该怎么配置 小问题,解决马上给分 请帮忙推荐基本学习COM+的书籍,谢谢 (新手)希望能够得到帮助 ITK与VTK链接问题 32位程序在64位下重新编译的问题 打印设置问题!!!在本站找到一篇资料,但不知道放在什么位置,怎么放都有错 怪事,怎么加也不应该是60!!
CSocket好像自己内部封装的线程有问题,
经常会死机,用CAsyncSocket是非阻塞,
::OnConnect()处理连接,设个timer计时
就好了。setsockopt()也可以设的,但
有时候还是会死机。
setsockopt( s , SOL_SOCKET , SO_RCVTIMEO , (const char *)&rcvtimeo , sizeof(rcvtimeo) );
不过我在自己的程序中用了一下,第一次能很快返回,但以后仍要75秒左右。
不知道是否用IOCtl()设置非阻塞是否正确,如果不正确应该用什么方法设置为非阻塞。
this->IOCtl(FIONBIO,(unsigned long*)&l_iFlag);[CSocket类]