1、客户端在recv前使用select,可用于做心跳定时处理,超时时长为3个心跳包,若超时,关闭心跳、close(sockfd)、并且reInitSockfd, (服务端心跳在接收客户心跳之后的处理函数中刷新心跳定时,并回复心跳)。
2、在accept之前调用select,可同时监听listenfd和connfd多个描述符,在一个线程(进程)中,处理多个客户连接。
3、非阻塞connect \ accept,先fcntl() 并非setsockopt() 的设置套接字为O_NONBLOCK 非阻塞模式
调用connect,connect发起连接之后,会返回-1,且errno == EINPROGRESS
之后调用select检测描述符的可读可写状态,其中有一点需注意:若套接字发生错误,则它将由select标记为即可读又可写
select的三种用法
最新推荐文章于 2023-05-05 06:54:12 发布