WEB开发网
开发学院软件开发VC ACE中网络通讯编程基本架构 阅读

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

 2010-08-22 20:47:10 来源:WEB开发网   
核心提示:ACE_INET_Addr类,包装了网络地址ACE_SOCK_Connector类,ACE中网络通讯编程基本架构,扮演主动连接角色,发起通讯连接,//可以先定义一个地址对象,再用ACE_INET_Addr的set函数来设定,连接到远端的服务,ACE_SOCK_Acceptor类

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;
}

1 2 3  下一页

Tags:ACE 网络通讯 编程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接