请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

使用select的时候,关于FD_ISSET的问题

老师,您好,请问一下,在讲解使用select实现tcp server的时候,有个地方如下:
if (FD_ISSET(socket_fd, &fd_sets)) { // 如果来的是新连接
//…
}

这里的理解应该是判断fd_sets里面有没有socket_fd,但是在for循环下面有:
FD_SET(socket_fd, &fd_sets);
也就是上面的if判断应该是会通过的才对把。

所以,不太明白这个地方if (FD_ISSET(socket_fd, &fd_sets))为啥表示"如果来的是新链接",希望老师讲解一下,谢谢!

正在回答 回答被采纳积分+3

1回答

提问者 没有蜡笔的小新 2021-01-28 11:45:05

补充回答,已经弄清楚了。原因在于,select的时候,会将之前加入到fd_set中但是没有事件发生的fd清空,换句话说,如果select之后,socket_fd还在fd_set,说明当前select的时候socket_fd发生了事件,也就是有新的请求连接到socket_fd上了。

3 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信