转载请注明来源: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概述的更多相关文章

  1. 嵌入式linux的网络编程(1)--TCP/IP协议概述

    嵌入式linux的网络编程(1)--TCP/IP协议概述 1.OSI参考模型及TCP/IP参考模型 通信协议用于协调不同网络设备之间的信息交换,它们建立了设备之间互相识别的信息机制.大家一定都听说过著 ...

  2. Linux网络编程&内核学习

    c语言: 基础篇 1.<写给大家看的C语言书(第2版)> 原书名: Absolute Beginner's Guide to C (2nd Edition) 原出版社: Sams 作者: ...

  3. Linux网络编程必看书籍推荐

    首先要说讲述计算机网络和TCP/IP的书很多. 先要学习网络知识才谈得上编程 讲述计算机网络的最经典的当属Andrew S.Tanenbaum的<计算机网络>第五版,这本书难易适中. &l ...

  4. Linux网络编程经典书籍推荐

    UNIX环境高级编程<高级unix环境编程><unix网络编程><深入理解计算机系统>比较好 =====================Linux网络编程经典书籍推 ...

  5. JavaSE_ 网络编程 目录(26)

    JavaSE学习总结第26天_网络编程26.01 网络编程概述26.02 网络模型概述和图解26.03 网络编程三要素概述26.04 网络编程三要素之IP概述126.05 InetAddress类的概 ...

  6. JavaSE学习总结第26天_网络编程

      26.01  网络编程概述 网络编程:就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换. 26.02  网络模型概述和图解 计算机网络之间以何种规则进行通信,就是网络模型研究问题. ...

  7. 【Java基础】【26网络编程】

    26.01_网络编程(网络编程概述)(了解) A:计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下, ...

  8. 阶段01Java基础day25网络编程

    26.01_网络编程(网络编程概述) A:计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源 ...

  9. day26<网络编程>

    网络编程(网络编程概述) 网络编程(网络编程三要素之IP概述) 网络编程(网络编程三要素之端口号概述) 网络编程(网络编程三要素协议) 网络编程(Socket通信原理图解) 网络编程(UDP传输) 网 ...

  10. 网络编程、三要素、Socket通信、UDP传输、TCP协议、服务端(二十五)

    1.网络编程概述 * A:计算机网络 * 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传 ...

随机推荐

  1. 云南农职《JavaScript交互式网页设计》 综合机试试卷①——实现购物车的结算

    一.语言和环境 实现语言:javascript.html.css. 开发环境:HBuilder. 二.题目2(100分) 1.功能需求: 马上过节了,电商网站要进行促销活动,需要实现该商城购物车的商品 ...

  2. 【JPA】Spring Data JPA 实现分页和条件查询

    文章目录 1.在`Repository`层继承两个接口 2.在Service层进行查询操作 3.Page的方法 1.在Repository层继承两个接口 JpaRepository<Admin, ...

  3. Pytest_在jenkins中使用allure报告(13)

    一.安装allure插件 点击jenkins管理-->插件管理 点击Available,在搜索框中输入allure并安装 二.配置构建命令 三.构建配置allure插件 点击构建后置操作 pat ...

  4. PowerShell 【按任意键继续】

    1 function Pause(){ 2 [System.Console]::Write('按任意键继续...') 3 [void][System.Console]::ReadKey(1) 4 } ...

  5. kafka学习笔记(五)kafka的请求处理模块

    概述 现在介绍学习一下kafka的请求处理模块,请求处理模块就是网络请求处理和api处理,这是kafka无论是对客户端还是集群内部都是非常重要的模块.现在我们对他进行源码深入探讨.当我们说到 Kafk ...

  6. 微服务架构 | 3.1 Netflix Eureka 注册中心

    目录 前言 1. Eureka 基础知识 1.1 Eureka 模型中的服务器与客户端 1.2 Eureka 的 30s 启动机制 1.3 Eureka 为什么注册服务的 IP ,而不是主机名 1.4 ...

  7. linux 下安装PostgreSql 并配置远程访问

    1.官网下载PostgreSql 安装包 (https://www.enterprisedb.com/downloads/postgres-postgresql-downloads) 我下载的是 9. ...

  8. 《剑指offer》面试题30. 包含min函数的栈

    问题描述 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1).   示例: MinStack minSt ...

  9. 《剑指offer》面试题50. 第一个只出现一次的字符

    问题描述 在字符串 s 中找出第一个只出现一次的字符.如果没有,返回一个单空格. 示例: s = "abaccdeff" 返回 "b" s = "&q ...

  10. Docker安装配置mysql

    Docker安装mysql踩坑日记 拉取镜像 sudo docker pull mysql:5.7 运行镜像 docker run -p 3306:3306 --name mysql -v /myda ...