如题,是不是只能用非阻塞模式下的select进行超时控制?
解决方案 »
- 【MFC】怎样动态改变静态文本上的文字
- 大的exe文件好象无法加载
- WEB服务器原来有些是区分大小写的
- [请教]项目中的数据结构问题
- VC OPENGL 3DS视角问题
- VC++6.0 + ADO 编译无错误,运行出现错误,请各位指点一下!(新手上路)
- 200分!!!请问怎么往XML中添加一个新的节点?多谢了!!!!!!
- 为什么会出现:First-chance exception in ITM CO.exe: 0xC0000005: Access Violation.这样的错误?
- MessageBox中的什么参数使得有“是”“否”“取消”的提示?
- VC6.0中调试后控制台窗口无法关闭的解决方法
- 为何我的循环使用FTP的一些函数第二次就不行了?
- CJ608Libd.libcannot open file "CJ608Libd.lib"???????
setsockopt
的帮助看吧
俺用他设置过接收超时,但没有设置过连接超时,你自己看看
setsocketopt没法设置连接超时,只能设置接受,发送超时
只有发送可以设置超时
2 连接有效ip的话返回比较快
3 连接无效ip 大概21秒返回false
服务器还没有打开
connect有效ip
过了24秒才返回
不想改成非堵塞有什么办法可以解决吗
用select只是为了缩短这个超时时间.
用select应该可以,但我没有试验过。
CSocket要等大概20多秒才会返回超时。你用同步类希望减少超时值是希望节省cpu和内存吧?CAsyncSocket虽然是异步的,但Connect时同样要等20多秒才会超时返回(OnConnect),你可以在OnConnect之前delete 或 Close CAsyncSocket对象,但是我告诉你,非常遗憾!这样做是有时会出错的,大概30次会有一次出错,如果改为在OnConnect之后再delete 或 Close就100%不会出错。这个不知是不是CAsyncSocket的bug,而且这种运行时错误用try{}和cache(...)无法截获!程序就被迫推出了。请高手救救我!希望能够得到一个好的减少超时时间的方法。如果用CSocket,不知可不可以在Connect阻塞的时候,强制结束该线程,如果可以但又怎样解决在线程外结束线程造成的内存泄漏?SetsockOpt我查过,是没有减少超时的设置的!