使用select对fd可读写,格式
while(ctrl){
////
FD_ZERO(&readSocketSet);
FD_SET(readSocketFd,&readSocketSet);
ret = select(maxFd,&readSocketSet,NULLNULL)
switch(ret){
case 0: break;
case -1: exit(-1);break;
default:
//recv data
break;
}
}
若把
FD_ZERO(&readSocketSet);
FD_SET(readSocketFd,&readSocketSet);
屏蔽,
1、linux和linux能接收到数据,只能接收几次。
2、linux无法接收来自windows的数据,select感应不到fd的变化。
今天忘记加上这两句,调试了好久才发现这个问题,谨记。
本文探讨了使用select函数监测文件描述符(fd)可读性的方法。通过一个具体的代码示例,展示了如何利用FD_ZERO与FD_SET初始化文件描述符集并设置要监测的fd。文章还提到了如果忽略这两步操作可能导致的问题:在某些情况下,如Linux到Linux的通信中可能暂时不受影响,但在Linux与Windows之间的通信时则会出现数据接收失败的情况。
2084

被折叠的 条评论
为什么被折叠?



