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)注册信号处理函数。

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

相关推荐
幸运狗头19 分钟前
Linux学习-TCP并发服务器构建
linux·服务器·学习
superlls36 分钟前
(计算机网络)TCP 三握中第三次 ACK 丢失会发生什么?
网络·网络协议·tcp/ip
合作小小程序员小小店1 小时前
挖漏洞三步走
python·网络协议·web安全·网络安全·安全威胁分析
The_Second_Coming2 小时前
最小化 CentOS 模板虚拟机安装与配置
linux·运维·服务器·学习·centos·云计算
蜗牛沐雨3 小时前
驾驭巨量数据:HTTP 协议与大文件传输的多种策略
网络·网络协议·http
AAA修煤气灶刘哥4 小时前
网络编程原来这么好懂?TCP 三次握手像约会,UDP 像发朋友圈
后端·python·网络协议
skywalk81634 小时前
升级DrRacket8.10到8.18版本@Ubuntu24.04
linux·运维·服务器·lisp·racket
GalaxyPokemon5 小时前
TCP和HTTP的keep-alive的区别
网络协议·tcp/ip·http
钮钴禄·爱因斯晨6 小时前
Linux(一) | 初识Linux与目录管理基础命令掌握
linux·运维·服务器
BioRunYiXue6 小时前
FRET、PLA、Co-IP和GST pull-down有何区别? 应该如何选择?
java·服务器·网络·人工智能·网络协议·tcp/ip·eclipse