select的三种用法

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的三种用法_第1张图片

你可能感兴趣的:(unix网络编程,UNPV探索)