2021-03-17 Select

1  Select 客户端链接数可以自定义。  #define FD_SETSIZE 2。 必须放在包含winsock头文件之前。

2  FD_SETSIZE 等于2时,只能接收一个客户端链接。 服务端socket会占用一个。

3 当 fd_set 结构体达到 FD_SETSIZE 时,FD_SET函数会失败。客户端recv会一直阻塞,但是tcp链接是会保持的。

4 FD_ZERO 清空集合。 FD_CLR 删除集合里的某个套接字。当有新链接进来时,需要删除服务端套接字,再调用 accept 接收新的客户端连接。

5  FD_ZERO,  FD_CLR,  FD_SET,  线程不安全。

6 FD_ISSET 判断socket是否在集合中,在的话说明有数据来了。如果是服务端socket,那么就是说明有新链接来了。如果是客户端socket,那么说明客户端发送数据过来了。

7 select之后。 fdRead 的总数是有客户端发送数据的socket总数。


参考:
1 https://blog.csdn.net/wwxy1995/article/details/88431650
2 https://blog.csdn.net/wjl18270365476/article/details/98474418
3 http://www.cppblog.com/kevinlynx/archive/2014/06/01/207172.html

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • HTTP网站资源类型 HTTP网站访问度量 企业常用网站服务软件 nginx网站服务特性 nginx服务部署安装 ...
    谜糊生阅读 239评论 0 1
  • Select I/O复用,可以调用系统调用select和poll!在这两个系统调用中的某一个阻塞,而不是真正的阻塞...
    小叶大孟阅读 880评论 0 0
  • select IO模型学习 问题由来单进程单线程下,最普通的socket是阻塞连接的,即server与一个clie...
    FakeCSer爱去网吧阅读 1,090评论 0 1
  • 今天晚上,有同学给我报了一个内部网络协议包 stpclient 的 bug,如下: 这个异常已经发生过好几次了,所...
    t2othick阅读 8,139评论 0 3
  • 什么是I/O复用? 所以针对每一种I/O复用的机制,我们需要回答3个问题: 多路复用机制会监听套接字上的哪些事件?...
    wayyyy阅读 253评论 0 0