转载请注明来源: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. c++—通讯录管理系统

    一.运用所学的结构体.地址指针等基础知识,完成通讯录管理系统 二.系统主要有以下6个功能: 1.添加联系人2.显示联系人 3.删除联系人 4.查找联系人5.修改联系人 6.清空联系人 1 #inclu ...

  2. MySQL高级查询与编程笔记 • 【第5章 常见数据库对象】

    全部章节   >>>> 本章目录 5.1 视图 5.1.1 视图的定义 5.1.2 视图的优点 5.1.3 视图的创建和使用 5.1.4 利用视图解决数据库的复杂应用 5.1. ...

  3. SpringCloud创建Config Client配置读取

    1.说明 本文详细介绍配置中心客户端使用方法, 即Config Client到Config Server读取配置, 这里以创建Config Client服务为例, 基于已经创建好的Config Ser ...

  4. CSS基础 元素整体透明效果(包含内容+背景及子元素)

    属性名:opacity:数字+px; 数字值取值0-1之间数字 数字值:1表示完全不透明 0表示完全透明使用后效果 html结构代码 <div class="box"> ...

  5. 分享一款开源堡垒机-jumpserver

    本文主文章地址为:https://blog.csdn.net/KH_FC JumpServer是由FIT2CLOUD(飞致远)公司旗下一款开源的堡垒机,这款也是全球首款开源的堡垒机,使用 GNU GP ...

  6. Selenium_获取浏览器名称和版本(5)

    from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get(" ...

  7. react中create-react-app详情配置文档

    https://facebook.github.io/create-react-app/docs/documentation-intro

  8. vue3.0+vite+ts项目搭建--vite.config.ts配置(三)

    vite.config.ts配置 配置路径处理模块 安装ts的类型声明文件 yarn add @types/node -D 通过配置alias来定义路径的别名 resolve: { alias: { ...

  9. Flowable实战(二)集成Springboot

    1.创建Springboot项目   打开IDEA,通过File -> New -> Project- -> Spring Initializr 创建一个新的Springboot项目 ...

  10. 网络协议学习笔记(七)流媒体协议和P2P协议

    概述 上一篇讲解了http和https的协议的相关的知识,现在我们谈一下流媒体协议和P2P协议. 流媒体协议:如何在直播里看到美女帅哥 最近直播比较火,很多人都喜欢看直播,那一个直播系统里面都有哪些组 ...