ACE中网络通讯编程基本架构

    ACE_INET_Addr类,包装了网络地址
    ACE_SOCK_Connector类,扮演主动连接角色,发起通讯连接。连接到远端的服务。
    ACE_SOCK_Acceptor类,扮演被动连接角色,等待连接。等待远端客户的请求。
    ACE_SOCK_Stream类,扮演数据通讯角色,发送和接收数据。完成客户与服务之间的通讯。
   
    利用ACE库来开发网络通讯程序是很简单的,一个基本程序只用到以上提到的几个类,就
可以完成一个基于客户端、服务器端模型的网络应用的开发。开发者无需了解Socket在不同平
台上的实现,记忆众多并相互关联的Socket APIs。

    一下以一个Hello World程序为演示。
   
    客户端程序。发送一个Hello World到远端的服务器,并接收服务器返回的信息,将信息
打印在屏幕上。

#include <iostream>
#include <string>

#include <ace/ACE.h>
#include <ace/INET_Addr.h>
#include <ace/SOCK_Connector.h>
#include <ace/SOCK_Stream.h>

int main( int argc, char* argv[] )
{
 ACE::init();//初始化ACE库,在windows下一定要

 std::string str = "hello world";

 //设置服务器地址
 //第一个参数是端口,第二个是ip地址,也可以是域名。
 //可以先定义一个地址对象,再用ACE_INET_Addr的set函数来设定。
 //地址的配置很多,具体的参照文档
 ACE_INET_Addr peer_addr( 5050, "127.0.0.1" );
 ACE_SOCK_Stream peer_stream;//定义一个通讯队形

 ACE_SOCK_Connector peer_connector;//定义一个主动连接对象
 peer_connector.connect( peer_stream, peer_addr );//发起一个连接

 peer_stream.send( str.c_str(), str.length() );//发送数据到服务器

 str.erase();
 str.resize( sizeof( "hello world" ) );
 peer_stream.recv( (void*)str.c_str(), str.length() );//接收来自服务器的信息

 std::cout << "from server message : " << str << std::endl;

    ACE::fini();
 return 0;
}

    服务器端代码。接收一个远端的连接,将接收到的信息打印在屏幕上,并将接收到的信
息返回给客户端。
#include <iostream>
#include <string>

#include <ace/ACE.h>
#include <ace/SOCK_Acceptor.h>
#include <ace/SOCK_Stream.h>

int main( int argc, char* argv[] )
{
 ACE::init();

 std::string str;
 str.resize( sizeof( "hello world" ) );

 //设置服务器地址
 ACE_INET_Addr peer_addr( 5050, "127.0.0.1" );

 ACE_SOCK_Stream peer_stream;
 
 //创建被动连接角色对象
 ACE_SOCK_Acceptor peer_acceptor;
 //开启被动连接对象,将对象绑定到一个地址上
 peer_acceptor.open( peer_addr );

 //等待连接
 peer_acceptor.accept( peer_stream );

 //数据通讯
 peer_stream.recv( (void*)str.c_str(), str.length() );
 std::cout << "from client message : " << str << std::endl;
 peer_stream.send( str.c_str(), str.length() );

 ACE::fini();
 return 0;
}
××××以上代码需要ACE库才能运转××××
   
    利用ACE编程的基本框架。
    客户端
    1 创建地址对象。(ACE_INET_Addr)
    2 创建主动连接对象。(ACE_SOCK_Connector)
    3 创建数据通讯对象。(ACE_SOCK_Stream)
    4 设置服务器地址。(ACE_INET_Addr::set)
    5 将数据通讯对象和地址作为参数传给主动连接对象,发起主动连接(ACE_SOCK_Connector::connect)
    6 利用通讯对象接收和发送数据。(ACE_SOCK_Stream::recv和ACE_SOCK_Stream::send)
   
    服务器端
    1 创建地址对象。(ACE_INET_Addr)
    2 创建被动连接对象。(ACE_SOCK_Connector)
    3 创建数据通讯对象。(ACE_SOCK_Stream)
    4 设置服务器地址。(ACE_INET_Addr::set)
    5 将地址作为参数传给被动连接对象,启动接收(ACE_SOCK_Acceptor::open)
    6 将数据通讯对象传给被动连接对象,启动接收,接受连接(ACE_SOCK_Connector::accept)
    7 利用通讯对象接收和发送数据。(ACE_SOCK_Stream::recv和ACE_SOCK_Stream::send)

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ACE网络框架-文档资料.rar】压缩包含有如下内容: ================================================== 【ACE源码】目录: ACE+TAO+CIAO-6.0.0.tar.bz2 --------------------------------------------------------------------- 【ACE自适配通信环境文技术文档】目录: ACE自适配通信环境(代序).pdf ACE自适配通信环境文技术文档 [2002年12月版].chm 上篇:ACE技术论文集.pdf 篇:ACE程序员教程.pdf 下篇:ACE应用实例.pdf --------------------------------------------------------------------- 【C++网络编程全集】目录: C++ Network Programming, Volume 1:Mastering Complexity with ACE and Patterns.chm C++ Network Programming, Volume 1:Mastering Complexity with ACE and Patterns.pdf C++ Network Programming, Volume 2:Systematic Reuse with ACE and Frameworks.chm C++NP_v1-P193.ppt C++NP_v2-P298.ppt C++NP_v2-P383.ppt C++网络编程 卷1:运用ACE和模式消除复杂性-P328.pdf C++网络编程 卷2:基于ACE和框架的系统化复用-P374.pdf --------------------------------------------------------------------- 【其它资料】目录: ACE-tutorial [英文版]-P306.pdf ACE-类继承关系.pdf ACE详细介绍-译文.pdf C++网络编程学习笔记(ACE).docx --------------------------------------------------------------------- ACE技术内幕:深入解析ACE架构设计与实现原理 [机械工业.2012年出版.带书签]-P333.pdf --------------------------------------------------------------------- ACE程序员指南:网络与系统编程的实用设计模式 [国电力.2005年出版.带书签]-P374.pdf ================================================= 附送视频学习资料:[看雪论坛独家免费共享]の轩辕IT培训 Linux C++ 远程全科班 Boost ACE[无KEY 完整版] 该视频是很好的网络框架学习资源,关于ACE框架的视频在Module6,还有Boost相关的讲解。 下载地址:https://pan.baidu.com/s/1kTDYnjD 【注:可能会失效,赶紧存入网盘】

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值