C++网络编程学习笔记(ACE).doc
《C++网络编程学习笔记(ACE).doc》由会员分享,可在线阅读,更多相关《C++网络编程学习笔记(ACE).doc(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、前言面向对象中间件体系结构a) 主机基础设施中间件:封装socket,线程等不同主机的实现,形成统一的接口。如java,ACEb) 分布式中间件:连接管理,内存管理,整编,解编,端点和请求的多路分离,同步,多线程等,使程序员象开发独立应用程序一样开发分布式应用程序。分布式中间件的核心是ORB(Object Requests Broker对象请求代理),如:COM+,JAVA RMI,CORBA1 通信设计空间1.1 面向连接协议需要做出如下设计:l 数据成帧策略l 连接多路复用策略1. 链接多路复用:多个线程复用同一个TCP链接2. 非多路复用:多个进程使用多个链接。系统开销大1.2 同步和异
2、步消息交换1.3 消息传递与共享内存消息传递:消息中间件共享内存:l 本地共享内存:shmget(),shmat(). 内存映射文件l 分布式共享内存:虚拟内存,是本地共享内存的一种抽象。2 SOCKET API 概述3 ACE Socket wrapper faade3.1 ACE_Addr运算符 = , != addr_type, addr_size3.2 ACE_INET_Add3.3 ACE_IPC_SAP为其他ACE对象提供了基本的“I/O”句柄操作能力enable()disable()get_handle()set_handle()3.4 ACE_SOCK继承自ACE_IPC_SA
3、P,get _local_addr()set_local_addr()open()close()get_remote_addr()set_option()get_option()3.5 ACE_SOCK_Connecter主动连接模式,是一个工厂类。发起一个连接,并在连接成功后初始化一个ACE_SOCK_Stream对象。可以通过“阻塞”“非阻塞”“定时”方式发起。以下是非阻塞模式以下是非阻塞模式3.6 ACE_SOCK_Stream数据传输角色的实现。Send()Recv()Send_n()Recv_n()Recvv_n() /使用分散读取系统函数,高效、完整读取多个缓冲区,参数 iovec
4、Sendv_n() /使用集中写入系统函数,高效、完整写入多个缓冲区Enable(ACE_NOBLOCK)3.7 ACE_SOCK_Acceptor被动连接模式的实现。相当于accept()是一个工厂类,初始化一个ACE_SOCK_StreamOpen()Accept()3.8 ACE_Mem_Map通过内存映射文件机制,将文件映射到内存中,以便及时读取,提高了效率。此外,内存映射文件还可以被多个进程共享。4 网络日志服务程序的实现4.1 ACE_Message_Block标准的消息管理包括:1) 收到消息后,保存到缓冲区2) 添加和删除消息的头和尾3) 将消息分段,或重新组装,以适应网络的最
5、大传输单元MCU4) 将消息保存到缓冲区中,以进行传输5) 对“未按顺序”接收的消息进行记录ACE_Message_Block实现了composite模式。避免频繁的内存复制操作。提高效率。 注:也可以用ACE:write_n(ACE_STDOUT,head)一次性写入4.2 ACE_InputCDR与ACE_OutputCDR功能:整编,解编。避免不同操作系统对数据类型(如int)的不同实现方法。ACE_OutputCDR header(ACE_CDR:MAX_ALIGNMENT+userlength)ACE_OutputCDR:from_boolean(ACE_CDR_BYTE_ORDER
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 网络 编程 学习 笔记 ACE
限制150内