bsd socket 的select的用法?? select(0,&fdread,NULL,NULL);if(FC_ISSET(socket,&fdread){ recv(..);}是这样用吗?这样recv就不会阻塞了吗?我试了,好像不行呀. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 struct timeval timeout;fd_set fs; FD_ZERO(&fs);FD_SET(m_hSock,&fs);timeout.tv_sec = 40; //secondtimeout.tv_usec = 0; //million secondint ret=0;ret = select(0,&fs,0,0,&timeout);if( ret <= 0 ) { printf("error"); return;} 这些东东我都写了为什么select返回值是-1?我用csocket不能这么用select吗? timeout -> 0,0我是这样写的 recv阻塞和select没关系!有关系的是你的socket的属性.select只是事件通知. select不是可以判断是否可以向一个套接字写入数据或者套接字是否可读吗?如果判定某套节子可以写,那么再调用recv不是就不会出现阻塞了吗?不然套接字可写是什么意思呀? 如果select不关用,那么bsd怎么能防止socket阻塞呢?它不是没有异步模型吗?还请各位指点指点 bsd 异步模型还是有的用ioctlsock设置,找到了,不好意思可是我觉得select还是没什么用啊,他能监测套接字可读,"可读"到底是什么意思呀? recv(Sock,&c,1,0);一个一个字节读,看堵不也许你一次读多了可读只表示有数据,没说有多少阿 是不是每次recv的时候就把接收缓冲里的一些内容删掉(recv多少,就删多少),读到最后读完了,缓冲区就没有数据了,所以套接字就不可读了呢? 不是看你是同步还是异步了,如果是同步的话等到对等的一方回应在删除!如果是异步的话,一般recv()后直接删除socket缓冲区; 如何保存图片的指定区域 VC6.0 MFC GDI+ 一个按钮执行函数过程中经常出现卡,停顿现象,求解! 请问初学 GDI+ ,有什么好的书学习吗? 连续send出现的问题-数据出错了,请问为什么! 急啊,CComBSTR的内存问题 ON_UPDATE_COMMAND_UI_RANGE的问题 我现在已经把资源从资源DLL和EXE中读出来了,但怎么根据这些数据创建相应的可视化资源? 【故人今在何处】【仁者大师】 Winpcap 发送无线广播包的问题 C++怎么载入运动的图片 大学读计算机专业的朋友请进!你们的毕业论文都是什么题目阿? 关于文件存储的问题
fd_set fs;
FD_ZERO(&fs);
FD_SET(m_hSock,&fs);
timeout.tv_sec = 40; //second
timeout.tv_usec = 0; //million second
int ret=0;
ret = select(0,&fs,0,0,&timeout);
if( ret <= 0 )
{
printf("error");
return;
}
为什么select返回值是-1?
我用csocket不能这么用select吗?
我是这样写的
不然套接字可写是什么意思呀?
还请各位指点指点
可是我觉得select还是没什么用啊,他能监测套接字可读,"可读"到底是什么意思呀?
一个一个字节读,看堵不
也许你一次读多了
可读只表示有数据,没说有多少阿
如果是异步的话,一般recv()后直接删除socket缓冲区;