单循环服务器:同一时刻,只能处理一个客户端的任务
并发服务器:同一时刻,能够处理多个客户端的任务
UDP不需要创建连接
TCP并发服务器
1.多进程
2.多线程
3.IO多路复用
1、多进程
2、多线程
3、IO多路复用
IO模型:
1.阻塞IO
fgets scanf read recv getchar
实现多个IO同步的效果
相比于非阻塞,CPU占有率低
2.非阻塞IO
使用轮询的方式实现,可以监测多路IO
CPU占有率高
实现:
1.获取原文件描述符的属性
fcntl()
F_GETFL
2.增加非阻塞属性
3.设置新属性
3.信号驱动IO
实现:
1.增加异步属性
2.关联信号和当前的进程
3.注册信号
1.异步通知的IO方式,节省CPU
2.只能检测少量IO
4.IO多路复用
1.多个IO复用一个进程
select
poll
epoll