select函数及其TCP服务器模型(C语言)

您所在的位置:网站首页 c语言socket库下载 select函数及其TCP服务器模型(C语言)

select函数及其TCP服务器模型(C语言)

2023-07-09 11:30| 来源: 网络整理| 查看: 265

功能:

        阻塞函数,让内核监测集合中是否有文件描述符准备就 绪。若有准备就绪,则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