ACE初体验教案资料.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
最近这一周在研究ACE,这学期的突然的机会让我接触到了ACE,仅仅两天,我不得不为他的精彩折服,对分布式的良好支持,对平台的适应性,用户线程的管理,主动对像,前台服务器……我真是无法用语言来表达对他的钟情,哈哈。 下面介绍一下我对ACE学习心得:ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)构架(Framework),在其中实现了许多用于并发通信软件的核心模式。ACE提供了一组丰富的可复用C++ Wrapper Facade(包装外观)和构架组件,可跨越多种平台完成通用的通信软件任务。其中包括:事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、共享内存管理、消息路由、分布式服务动态(重)配置、并发执行和同步,等等。 ACE的目标用户是高性能和实时通信服务和应用的开发者。它简化了使用进程间通信、事件多路分离、显式动态链接和并发的OO网络应用和服务的开发。此外,通过服务在运行时与应用的动态链接,ACE还使系统的配置和重配置得以自动化。 还有很多我就不列举了,这里有我写的几个程序,有兴趣的话,大家一起研究: 1)ACE初体验: 客户端: #include ace/Log_Msg.h #include ace/OS_main.h #include ace/INET_Addr.h #include ace/SOCK_Connector.h #include ace/SOCK_Stream.h int ACE_TMAIN(int argc, ACE_TCHAR* argv[]) { ACE_DEBUG((LM_DEBUG,ACE_TEXT(freebird.\n))); ACE_SOCK_Connector connector; ACE_SOCK_Stream peer; ACE_INET_Addr peer_addr; ?? if(peer_addr.set(80,192.168.22.26)==-1) return 1; else if(connector.connect(peer,peer_addr)==-1) return 1; } 用ACE开发网络通信程序 该程序将演示如何将一个简单结构序列化后发送到网络上,如何从网络上接收到数据后反序列化回结构。 ACE的C++ WRAPPER FACADE层将网络通信分成三种角色:连接者(ACE_SOCK_Connector)、等待者(ACE_SOCK_Acceptor)和传输者 (ACE_SOCK_Stream)。 建立连接 首先使用ACE_SOCK_Connector::connect连接某个服务器(使用ip地址和端口号),该服务器上使用ACE_SOCK_Acceptor::accept等待 外部的连接请求。 ACE_INET_Addr类进行管理SOCKET通信使用的IP地址和端口号。 当连接建立的时候,连接者和等待者都初始化一个传输者用于通信。 下面就是连接者如何连接本机的7777端口的服务程序代码: #include iostream using namespace std; #include ace/INET_Addr.h #include ace/SOCK_Stream.h #include ace/SOCK_Connector.h int main(void) { ACE_INET_Addr address(127.0.0.1:7777); ACE_SOCK_Connector connector; ACE_SOCK_Stream stream; if(connector.connect(stream,address)==-1) { coutstrerror(errno)endl; } } 如果连接成功,connect方法返回0,如果连接失败,返回-1,线程专有的errno变量将被设置对应的错误码,你可以通过strerror函 数获取错误信息描述字符串。ACE不使用异常报错,原因之一是早些时候异常并不被所有的C++编译器支持,原因之二是异常对性能仍 然有影响,作为高性能底层库ACE仍然采用了C风格进行错误处理。但是你仍然可以在自己的应用逻辑中使用异常,并不会和ACE发生 冲突。 下面是服务器的示例: #include iostream using namespace std; #include ace/INET_Addr.h #include ace/SOCK_Stream.h #include ace/SOCK_Acceptor.h int main(void) { ACE_SOCK_Acceptor acceptor; //本地端口7777的ACE_INET_Addr对象

文档评论(0)

189****1013 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档