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

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

相关推荐
爱学习的小囧1 小时前
VMware Horizon 8 智能卡认证信任库配置攻略:新增 Root CA 导入指南
服务器·esxi·vmware·horizon
Magic--3 小时前
深入解析管道:最基础的进程间通信(IPC)实现
java·服务器·unix
三三有猫3 小时前
代理IP:按流量还是按IP/时长计费更划算?
网络·网络协议·tcp/ip
陳10304 小时前
Linux:基础开发工具
linux·运维·服务器
未来转换4 小时前
计算机网络之HTTP协议详解
网络协议·计算机网络·http
我爱学习好爱好爱4 小时前
Ansible 常用模块详解:cron、archive、unarchive实战
linux·服务器·ansible
乌恩大侠4 小时前
【KrakenSDR】MATLAB接口
服务器·网络·matlab
似水এ᭄往昔5 小时前
【Linux】--进程概念
linux·运维·服务器
IDIOT___IDIOT5 小时前
Linux 使用 `cp` 命令导致挂载点被覆盖问题记录
linux·运维·服务器
RisunJan5 小时前
Linux命令-mount(用于挂载Linux系统外的文件)
linux·运维·服务器