求教:select描述符同时可读写问题
是服务器的一端accept后得到新的描述符sdFD_ZERO(&wmask);
FD_ZERO)&remask);
FD_SET(sd,&remask);
FD_SET(sd,&wmask);
select(sd+1,&remask,&wmask,(fd_set *)0,NULL);
我要对sd 写消息。一旦对方关闭我也关掉他
if (FD_ISSET(sd,&wmask))printf("read\n");
if(FD_ISSET(sd,&remask))printf(write\n");
程序运行后:
一旦有客户端上来就会打印:"write"
一旦客户端关掉就会打印:“read"
"write"
求教为什么啊
求教:select描述符同时可读写问题
就是这样子的,对着呢!求教:select描述符同时可读写问题
那我现在就是通过if(FD_ISSET(sd,&wmask)&&FD_ISSET(sd,&remask)) 成立,说明对方关掉,所以我close(sd);这样对吗?
还有为什么一旦是客户端连上不是打印"read"啊
求教:select描述符同时可读写问题
那我现在就是通过if(FD_ISSET(sd,&wmask)&&FD_ISSET(sd,&remask)) 成立,说明对方关掉,所以我close(sd);这样对吗?
还有为什么一旦是客户端连上不是打印"read"啊而是"write"呢
求教:select描述符同时可读写问题
if (FD_ISSET(sd,&wmask))printf("read\n");
if(FD_ISSET(sd,&remask))printf(write\n");
没写错吧?
另外,你要判断关闭,直接监控rdset就可以了,read的时候是0,就说明
对方关闭。而不是判断两个set是否可读写。
求教:select描述符同时可读写问题
对不起写错了求教:select描述符同时可读写问题
我测了多次,当对方关掉后端口就可读可写啊求教:select描述符同时可读写问题
没错,关闭是会出现你说的这种现象。但是你试过发送数据,同时对方有数据来的这种情况么?会不会也出现这种现象?总之,这种方式测试socket关闭,并不合适。
求教:select描述符同时可读写问题
谢谢各位我再思考一下求教:select描述符同时可读写问题
楼主测试一个读便可。没必要测试写集合。
页:
[1]
2