首页 > 系统服务 > 详细

linux网络并发服务器开发基础

时间:2019-09-24 19:26:17      阅读:96      评论:0      收藏:0      [点我收藏+]

1.一请求一进程模型

  accept到客户端请求后fork出一个子进程

  在主进程程close掉客户端对应的clientfd,

  在子进程中用客户端对应的clientfd收发数据

  

2.多线程模型

 

   accept到客户端请求后pthread_create出一个线程,线程参数为(void *)clientfd

 

   在子线程中用客户端对应的clientfd收发数据

  

3.select模型  

     首先用FD_SET将监听fd添加到select的rdfds集合中,

    ////////////////////////////////////////////

 

  调用select函数

  用FD_ISSET判断监听fd是否可读,如果可读就accept出客户端fd,并将其添加到rdfds中

  遍历所有之前就建立的客户端fd,用FD_ISSET判断其是否可读,如果可读就执行相关操作

 

  ///////////////////////////////////////////

 

4.epoll模型

  调用epoll_create建立epfd

  调用epoll_ctl将listenfd添加到epfd中

       调用epoll_wait获取活跃的事件集合

  遍历活跃的事件集合

    判断对应事件是否是listenfd,如果是则将其添加到epfd中

    如果不是则执行其收发数据函数

    

  

  

 

  

 

linux网络并发服务器开发基础

原文:https://www.cnblogs.com/zhangrd/p/11580093.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!