一. TCP的服务器
- 基础部门, 网络编程
- 并发服务器:
1)一请求一线程
2)IO多路复用, epoll - TCP服务器百万连接:将在 09_百万并发服务器进行介绍。
二. 服务器:前台迎宾 --> listen; 服务员 --> clientfd
多个客户端,如何区分哪个客户端发送的?
sockfd解决不了,需要借助应用协议。
随着客户端越来越多,比如100w,不适合使用一请求以线程的方式, posix thread 8M . 1G内存 --> 可以开128个线程
三. epoll是什么?
比如一个服务器(小区),里面有很多个客户端,每个客户端都在服务器有连接(socket),每个IO相当于小区的住户收发快递
epoll是来管理这些IO,能够检测到哪个IO有数据,从而把这个提示返回给应用层,便于实现业务逻辑。这个epoll相当于小区的快递员,来检测哪个住户有快递了。
- epoll_create() :聘请一个快递员
- epoll_ctl() : 添加/关闭一个IO; update一个IO从A到B
- epoll_wait() : 多久时间去一次小区
四. 关于IO有没有数据?
- 一种是检测是否有数据 水平触发, 可触发多次,可分多次读完
- 一种是检测数据从无到有 边沿触发, 只触发一次,一次性读完
五. 面试时:epoll水平触发与边沿触发说清楚
开发时:要注意sockfd、clientfd等 IO的变化有没有在epoll的集合里
sockfd, epoll