udp接收数据时,如果socket没有数据,则函数recvfrom会一直阻塞,那该怎样退出呢?如果用非阻塞方式,可否有一个实例代码。不要mfc下的代码。
解决方案 »
- 100分散分啦 ………求教 MFC tooltip 的问题!!
- 新手求教
- 创建新文件怎么创建,原文件存在,但不想覆盖文件内容,接着写入内容怎么做.
- 请教大虾关于函数的问题?
- 关于ASSERT 与 TRACE 还有 ::怎么用啊?
- NT/2000下编程删除文件夹为什么出现"拒绝的权限"错误?
- 如何将数据生成HTML格式的报表输出?
- 如何读写i/o
- 谁有相关Microsoft ADO Data Control得详细资料给出解决 马上给分!
- 各位大侠请问,c语言中有些什么库?动态连接库,运行库,静态库,MFC库(好像又分MFC静态库和动态库),它们之间又什么区别?
- 如何用vc创建一个webservice
- 图像处理 求教各位大虾
2.调用connect,正常情况下,因为TCP三次握手需要一些时间;而非阻塞调用只要不能立即完成就会返回错误,所以这里会返回EINPROGRESS,表示在建立连接但还没有完成。
3.在读套接口描述符集(fd_set rset)和写套接口描述符集(fd_set wset)中将当前套接口置位(用FD_ZERO()、FD_SET()宏),并设置好超时时间(struct timeval *timeout)
4.调用select( socket, &rset, &wset, NULL, timeout )
返回0表示connect超时
如果你设置的超时时间大于75秒就没有必要这样做了,因为内核中对connect有超时限制就是75秒。
int nTime = 5000;
setsockopt(SOCKET, SOL_SOCKET, SO_RECVTIMEO, (char*)&nTime, sizeof(nTime);