码迷,mamicode.com
首页 > 系统相关 > 详细

Linux网络编程:select编程基本实现思路

时间:2015-07-06 06:37:33      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

一、打开网络通讯端口,选用TCP协议

      listenfd = socket(AF_INET,SOCK_STREAM,0);

二、初始化servaddr,并且进行网络字节序转换

      bzero(&servaddr,sizeof(servaddr));

      servaddr.sin_family         = AF_INET;

      servaddr.sin_addr.s_addr = htonl(INADDR_ANY);

      servaddr.sin_port           = htons(SERV_PORT);

三、绑定IP和端口

      bind(listenfd,(struct sockaddr *)&servaddr,sizeof(servaddr));

四、监听链接数目设置

      listen(listenfd,20);

五、初始化client[i],用来记录accept返回的文件描述符

      for(i = 0; i < FD_SETSIZE; i++)

           client[i] = –1;

六、构造select监控文件描述符集

      FD_ZERO(&allset);

      FD_SET(listenfd,&allset);

七、循环阻塞监听文件描述符

      while(1) {

     1.每次循环时都从新设置select监控信号集,通过select返回得到就绪的文件描述符个数

               rset = allset;                     

               nready = select(maxfd+1,&rset,NULL,NULL,NULL);

      2.判断文件描述符里listenfd是否置1,如果是,处理新链接请求

               if(FD_ISSET(listenfd,&rset)) {

 

               }

       3.如果不是,检测哪个clients有数据就绪

                for(i = 0; i <= maxi; i++) {

             

               }

      }

Linux网络编程:select编程基本实现思路

标签:

原文地址:http://www.cnblogs.com/beeffat/p/4623332.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!