select函数及其TCP服务器模型(C语言) |
您所在的位置:网站首页 › c语言socket库下载 › select函数及其TCP服务器模型(C语言) |
功能: 阻塞函数,让内核监测集合中是否有文件描述符准备就 绪。若有准备就绪,则select函 数解除阻塞; select函数解除阻塞后,则集合中会只剩下产生事件的文件描述符 例如0准备就绪,则集合中只剩下0 若sfd准备就绪,则集合中只剩下sfd; 若0和sfd均就绪,则集合中0和sfd均被保留 所以只需要判断集合中剩下哪个文件描述符,走对应处理函数即可。 原型: #include #include #include #include int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); 参数: int nfds:三个集合中最大的文件描述符编号+1; fd_set *readfds, fd_set *writefds, fd_set *exceptfds:读集合,写集合,其他集合。 若用不上,则填NULL; struct timeval *timeout:超时时间。若不设置超时时间,则填NULL,一直阻塞直到有事件产生,解除阻塞。 struct timeval { long tv_sec; /* seconds */ long tv_usec; /* microseconds */ }; 返回值: >0, 三个集合中成功触发事件的文件描述符个数; =0, 超时了 =-1,失败,同时更新errno; 操作集合的函数: void FD_CLR(int fd, fd_set *set); //将fd从集合中删除 int FD_ISSET(int fd, fd_set *set); //判断fd是否在集合中,若存在返回1, 不存在返回0 void FD_SET(int fd, fd_set *set); //将fd添加到集合中 void FD_ZERO(fd_set *set); //清空集合 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |