C++网络编程卷1、卷2概述
转载请注明来源:https://www.cnblogs.com/hookjc/
一: C++NPv1主要涉及到的类:
1.1. Logging_Server 是个抽象类,用来定义接口类型,此类不能实例化。
Logging_Handle 是个日志处理类,被服务器聚合。
1.2. Iterative_Logging_Server 实现基本的循环式服务器。
1.3. Reactor_Logging_Server 实现基本的反应式服务器(本质还是循环式服务器)。
1.4. Reactor_Logging_Server_Ex 实现基本的反应式服务器,
在Reactor_Logging_Server基础上利用Hash_Map绑定一个连接对应一个日志文件。
1.5 Process_Per_Connection_Logging_Server 实现一个连接一个进程模型服务器
1.6 Thread_Per_Connection_Logging_Server 实现一个连接一个线程模型服务器
1.7 RT_Thread_Per_Connection_Logging_Server 对Thread_Per_Connection_Logging_Server功能的扩展,
增加了实时机制,即提高数据处理线程的优先级。
二: C++NPv2主要涉及到的类:
2.1. Logging_Accepotr_Ex 和 Logging_Event_Handler_Ex 分别对 Logging_Accepotr、Logging_Event_Handler的功能
扩展, 增加了时间机制,即一段时间里客户没有发送日志文件,则关闭此连接。
2.2 Logging_Accepotr_WFMO 和 Logging_Event_Handler_WFMO分别对 Logging_Accepotr_Ex 和
Logging_Event_Handler_Ex的功能扩展, 增加了针对竞争状态的保护,即增加一个互斥体来显示地序列化对“客户
日志Daemon连接线程池的线程”的访问
2.3 Reactor_Logging_Server模版类需要ACCEPTOR参数化, 可以灵活选择Logging_Accepotr、Logging_Accepotr_Ex、
Logging_Accepotr_WFMO
2.4 ACE_Reactor有三种不同的实现:
ACE_Select_Reactor ACE Reactor在linux下默认的单线程实现(添加一个控制线程,用来优雅地关闭程序),利用
Logging_Accepotr 和 Logging_Event_Handler 实现。
ACE_TP_Reactor 是ACE_Select_Reactor线程池的实现,利用Logging_Accepotr_Ex 和 Logging_Event_Handler_Ex
实现。
ACE_WFMO_Reactor ACE Reactor在window下默认的多线程实现, 利用Logging_Accepotr_WFMO和
Logging_Event_Handler_WFMO来实现。
2.5 Reactor_Logging_Server_Adapter 继承自ACE_Service_Object.它聚合了模版Reactor_Logging_Server<ACCEPOTOR>
2.6 从模版Reactor_Logging_Server_Adapter定义了很多服务,供静态、动态加载使用。
包括: 类Server_Logging_Daemon、Server_Logging_Daemon_Ex、TPC_Logging_Server等。
个人理解:
C++NPV1里的Logging_Server 在功能上类似 C++NPV2里的 ACE_Event_Handler ,
C++NPV1里的Iteractor_Logging_Server 功能上类似 C++NPV2里的 Logging_Event_Handler
三: C++NPV1涉及到的类图

四: C++NPV1的线程、进程涉及到的类图

五: C++NPV2涉及到的类图

六:C++NPV2的第5章涉及到的类图

七: 总结
C++NPV1和C++NPv2举的例子主要是网络日志服务器,从最原始的网络模型开始讲到最后用ACE提供的框架来实现
来源:python脚本自动迁移
C++网络编程卷1、卷2概述的更多相关文章
- 嵌入式linux的网络编程(1)--TCP/IP协议概述
嵌入式linux的网络编程(1)--TCP/IP协议概述 1.OSI参考模型及TCP/IP参考模型 通信协议用于协调不同网络设备之间的信息交换,它们建立了设备之间互相识别的信息机制.大家一定都听说过著 ...
- Linux网络编程&内核学习
c语言: 基础篇 1.<写给大家看的C语言书(第2版)> 原书名: Absolute Beginner's Guide to C (2nd Edition) 原出版社: Sams 作者: ...
- Linux网络编程必看书籍推荐
首先要说讲述计算机网络和TCP/IP的书很多. 先要学习网络知识才谈得上编程 讲述计算机网络的最经典的当属Andrew S.Tanenbaum的<计算机网络>第五版,这本书难易适中. &l ...
- Linux网络编程经典书籍推荐
UNIX环境高级编程<高级unix环境编程><unix网络编程><深入理解计算机系统>比较好 =====================Linux网络编程经典书籍推 ...
- JavaSE_ 网络编程 目录(26)
JavaSE学习总结第26天_网络编程26.01 网络编程概述26.02 网络模型概述和图解26.03 网络编程三要素概述26.04 网络编程三要素之IP概述126.05 InetAddress类的概 ...
- JavaSE学习总结第26天_网络编程
26.01 网络编程概述 网络编程:就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换. 26.02 网络模型概述和图解 计算机网络之间以何种规则进行通信,就是网络模型研究问题. ...
- 【Java基础】【26网络编程】
26.01_网络编程(网络编程概述)(了解) A:计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下, ...
- 阶段01Java基础day25网络编程
26.01_网络编程(网络编程概述) A:计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源 ...
- day26<网络编程>
网络编程(网络编程概述) 网络编程(网络编程三要素之IP概述) 网络编程(网络编程三要素之端口号概述) 网络编程(网络编程三要素协议) 网络编程(Socket通信原理图解) 网络编程(UDP传输) 网 ...
- 网络编程、三要素、Socket通信、UDP传输、TCP协议、服务端(二十五)
1.网络编程概述 * A:计算机网络 * 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传 ...
随机推荐
- CS5263|DP转HDMI转换器芯片|CS5263芯片说明
CS5263是一款高性能DP1.4到HDMI2.0b功能芯片,设计用于将DP1.4源连接到HDMI2.0b接收器.CS5263集成了DP1.4兼容接收机和HDMI2.0b兼容接收机发射器.DP接口包括 ...
- vue中使用JSX报错,如何解决
Support for the experimental syntax 'jsx' isn't currently enabled (32:12): 30 | }, 31 | render() { & ...
- Vue-cli3.0配置全局less
第一种配置方式(推荐) npm install style-resources-loader vue-cli-plugin-style-resources-loader less-loader les ...
- 编写Java程序,创建一个父类交通工具类(Vehicles),以及两个子类,分别是轿车类(Car)和卡车类(Truck)。
返回本章节 返回作业目录 需求说明: 创建一个父类交通工具类(Vehicles),以及两个子类,分别是轿车类(Car)和卡车类(Truck). 父类有属性品牌(brand)和颜色(color). 在父 ...
- PL/SQL连接时,报无法解析指定的字符串
前言: 工作原因,需要安装PL/SQL连接数据,oracle和PL/SQL都装好了,环境变量也配好了,启动PL/SQL进行连接数据库,结果报"无法解析指定的字符串",连接失败了. ...
- 2.OSI各层概述
应用层 1.用户与网络的界面,所有能和用户交互产生网络流量的程序 典型应用层服务:FTP.SMTP.HTTP 表示层 1.用于处理在两个通信系统中交换信息的标识方式 功能1:数据格式变换(翻译) 功能 ...
- Module 4 - Azure SQL
1) Migrate AdventureWorks database from SQL Server instance to Azure SQL using DMA.2) Update ...
- 安装Apache-storm-0.9.1-incubating图解教程
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6596214331988247054/ 安装步骤 (1) 安装Zookeeper集群,可以参考前一篇文章,本文已安装 ...
- 《剑指offer》面试题06. 从尾到头打印链表
问题描述 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 <= 10 ...
- 《剑指offer》面试题59 - II. 队列的最大值
问题描述 请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value.push_back 和 pop_front 的均摊时间复杂度都是O(1). 若队列为空,pop_ ...