c++网络编程学习笔记(ace)

c++网络编程学习笔记(ace)

ID:1534699

大小:1.91 MB

页数:16页

时间:2017-11-12

c++网络编程学习笔记(ace)_第1页
c++网络编程学习笔记(ace)_第2页
c++网络编程学习笔记(ace)_第3页
c++网络编程学习笔记(ace)_第4页
c++网络编程学习笔记(ace)_第5页
资源描述:

《c++网络编程学习笔记(ace)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、前言面向对象中间件体系结构a)主机基础设施中间件:封装socket,线程等不同主机的实现,形成统一的接口。如java,ACEb)分布式中间件:连接管理,内存管理,整编,解编,端点和请求的多路分离,同步,多线程等,使程序员象开发独立应用程序一样开发分布式应用程序。分布式中间件的核心是ORB(ObjectRequestsBroker对象请求代理),如:COM+,JAVARMI,CORBA1通信设计空间1.1面向连接协议需要做出如下设计:l数据成帧策略l连接多路复用策略1.链接多路复用:多个线程复用同一个TCP链接2.非多路复用:多个进程使用多个链接。系统开

2、销大1.2同步和异步消息交换1.3消息传递与共享内存消息传递:消息中间件共享内存:l本地共享内存:shmget(),shmat().内存映射文件l分布式共享内存:虚拟内存,是本地共享内存的一种抽象。1SOCKETAPI概述2ACESocketwrapperfaçade2.1ACE_Addr运算符==,!=addr_type,addr_size2.2ACE_INET_Add2.3ACE_IPC_SAP为其他ACE对象提供了基本的“I/O”句柄操作能力enable()disable()get_handle()set_handle()2.4ACE_SOCK继

3、承自ACE_IPC_SAP,get_local_addr()set_local_addr()open()close()get_remote_addr()set_option()get_option()2.5ACE_SOCK_Connecter主动连接模式,是一个工厂类。发起一个连接,并在连接成功后初始化一个ACE_SOCK_Stream对象。可以通过“阻塞”“非阻塞”“定时”方式发起。以下是非阻塞模式以下是非阻塞模式1.1ACE_SOCK_Stream数据传输角色的实现。Send()Recv()Send_n()Recv_n()Recvv_n()//使用

4、分散读取系统函数,高效、完整读取多个缓冲区,参数iovec[]Sendv_n()//使用集中写入系统函数,高效、完整写入多个缓冲区Enable(ACE_NOBLOCK)1.2ACE_SOCK_Acceptor被动连接模式的实现。相当于accept()是一个工厂类,初始化一个ACE_SOCK_StreamOpen()Accept()1.1ACE_Mem_Map通过内存映射文件机制,将文件映射到内存中,以便及时读取,提高了效率。此外,内存映射文件还可以被多个进程共享。2网络日志服务程序的实现2.1ACE_Message_Block标准的消息管理包括:1)收

5、到消息后,保存到缓冲区2)添加和删除消息的头和尾3)将消息分段,或重新组装,以适应网络的最大传输单元MCU4)将消息保存到缓冲区中,以进行传输5)对“未按顺序”接收的消息进行记录ACE_Message_Block实现了composite模式。避免频繁的内存复制操作。提高效率。注:也可以用ACE::write_n(ACE_STDOUT,head)一次性写入1.1ACE_InputCDR与ACE_OutputCDR功能:整编,解编。避免不同操作系统对数据类型(如int)的不同实现方法。ACE_OutputCDRheader(ACE_CDR::MAX_ALI

6、GNMENT+userlength)ACE_OutputCDR::from_boolean(ACE_CDR_BYTE_ORDER)2并发设计空间服务器可以分为循环式、并发式和反应式等几大类。1操作系统的并发机制2ACE同步事件多路分离2.1ACE_Handle_Set2.2ACE_Handle_Set_Iterator2.3ACE::select()Set_bit()//将一个句柄放置在set中领悟到的:Logging_handler是一个工具对象。使用他时,先设置一个handle,然后再进行操作。就像螺丝刀一样。先指定给一个人,然后这个人才可以操作。

7、采用ACE_Hash_Map将socket句柄与log_file句柄关联在一起。从而实现根据socket句柄写相应log_file的功能。1ACE进程WrapperFaçadeACE_OS::getenv(“fafaff”)获得环境变量ACE_Process_Optionsopt;Opt.command_line(“%s%d”,”hhafaf”,20);ACE_Processchild;Child.spawn(opt);Child.wait();Child.exit_code();2ACE线程WrapperFaçade2.1ACE_Thread_Man

8、ager创建,管理线程ACE_Thread_Manager.instance()->spawn

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。