TCP并发服务器

在之前我们写过单循环服务器:同一时刻只能处理一个客户端任务

并发服务器则是在同一时刻,能够处理多个客户端的任务

一、实现方法

1、多进程

安全性好。

2、多线程

并发量更高、高效。

3、IO多路复用

二、IO模型

1、阻塞IO

阻塞函数:fgets、scanf、read、recv、getchar等。

特点:

(1)实现多个IO同步的效果;(有先后顺序)

(2)CPU占有率低。

2、非阻塞IO

特点:

(1)使用轮询的方式实现,可监测多路复用。

(2)CPU占有率高。

实现:

(1)获得原文件描述符的属性;

(2)增加非阻塞属性;fcntl

int fcntl(int fd , int cmd , ...)

参数:cmd为F_GETFL(获得) 、F_SETFL(设置) 、F_SETOWN(关联)等。

(3)设置新属性。

例如;非阻塞的读管道。

3、信号驱动IO

特点:

(1)实现异步IO操作,节省CPU开销。

(2)只能监测少量IO。

实现:

(1)增加异步属性;

(2)关联当前进程;

(3)注册信号处理函数。

例如:信号驱动的读管道。

相关推荐
步步为营DotNet2 小时前
深度剖析.NET中IHostedService:后台服务管理的关键组件
服务器·网络·.net
Ghost Face...3 小时前
i386 CPU页式存储管理深度解析
java·linux·服务器
DARLING Zero two♡3 小时前
【计算机网络】简学深悟启示录:http
网络协议·计算机网络·http
Yu_Lijing4 小时前
《图解HTTP》笔记与读后感(上)
网络·笔记·网络协议·http
北京耐用通信4 小时前
耐达讯自动化 Profibus 光纤链路模块:破解变频器通信难题,助力物流自动化升级
人工智能·物联网·网络协议·自动化·信息与通信
czy87874754 小时前
connect() 的阻塞特性取决于它所关联的 socket 是否被设置为非阻塞模式,connect() 会等待 TCP 三次握手的超时时间
服务器·网络·tcp/ip
geshifei5 小时前
Sched ext回调2——enable(linux 6.15.7)
linux·运维·服务器
傻啦嘿哟6 小时前
Python批量重命名照片并按拍摄日期归类:从原理到实践
linux·运维·服务器
de fei6 小时前
百度云服务器 AlmaLinux9安装java21
java·运维·服务器
longailk6 小时前
grep正则表达式小失误
java·服务器·正则表达式