ACE编译安装

ACE在Linux下的编译安装步骤(CentOS6.5 64Bit)

Linux平台安装(CentOS6.5 64bit)

1, 下载ACE软件包,上传至Linux服务器(假设目录为/opt/ace,且以root权限操作),并解压缩之。

下载网址:http://www.cs.wustl.edu/~schmidt/ACE.html

软件包名:ACE+TAO+CIAO-6.1.0.tar.gz

解压命令:tar zxvf
ACE+TAO+CIAO-6.1.0.tar.gz

2,配置环境变量(。

设置/etc/profile,在末尾加上以下两行:

export
ACE_ROOT=$HOME/ACE_wrappers

export LD_LIBRARY_PATH=$ACE_ROOT/lib:$LD_LIBRARY_PATH

添加完毕保存文件,执行命令”.  /etc/profile”(点之后要有空格),使环境变量生效。

附:ACE_ROOT:这个目录是在编译时会用到,因为所有的头文件都在<path_to>/ACE_wrappers/ace/目录下面,而且头文件包含格式都是<ace/Log_Msg.h>形式的。

LD_LIBRARY_PATH:这个是为了在程序运行的时候用的,因为安装好后,ACE的动态库(libACE.so等)都放在这个目录里面了。

3,配置平台配置文件。

(1)在$ACE_ROOT/ace下面创建config.h文件,并添加以下代码:

#include "ace/config-linux.h"

保存退出。

附:在windows下面,这个文件的内容应该改成”#include “ace/config-win32.h”。

(2)在$ACE_ROOT/include/makeinclude/目录下创建platform_macros.GNU,并添加以下代码:

include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU

保存退出。

附:如果想同时编译静态库,加起一行,添加:static_libs=1

如果想配置安装后路径可增加一行:INSTALL_PREFIX = /opt/ace

4,当$ACE_ROOT/目录下,执行make命令,编译ACE套件。

测试程序:

#include "ace/Log_Msg.h"

int ACE_TMAIN(int argc, char *argv[])

{

ACE_DEBUG((LM_DEBUG,
ACE_TEXT("Hello World!\n")));

return 0;

}

//编译命令:g++ -Wall -lACE -L$ACE_ROOT/lib -I$ACE_ROOT -o hello hello.cpp

Windows平台安装(Win7+VS2008)


1)  下载ACE后将其解压,不妨设解压路径是:D:/ACE_Wrapper

2)  添加操作系统的ace环境变量

右击“计算机”/属性---高级系统设置/高级/环境变量

添加系统变量:ACE_ROOT=D:/ACE_Wrapper

添加用户环境变量:Path=%ACE_ROOT%/lib  
//这样可以保证系统找到ace生成的动态库,不然执行时会出现:无法启动此程序,因为计算机中丢失ACEd.dll。

原因:windows下启动程序,会按照一个指定目录顺序去寻找需要的资源文件(包括dll等),原理一般windows的书上都会有介绍。

3)  设置VS2008的C++开发项目信息

打开任意一个vs2008解决方案,进入“菜单/工具/选项/项目和解决方案/VC++目录”,在右侧列表中选择“包含文件”,添加$(ACE_ROOT);

在右侧列表中选择“库文件”,添加$(ACE_ROOT)/lib。

如果当时环境变量没有生效,可以进入dos界面下修改环境变量。

比如要修改PATH,在DOS界面下执行“set PATH=C:”,然后重开一个窗口,再检查一下PATH有没有生效(命令:ECHO %PATH)

4)  配置ACE

在ACE_ROOT/ace目录下创建一个名为config.h的文件,文件内容为:

#define ACE_HAS_STANDARD_CPP_LIBRARY 1 //!<用于标准C++跨平台

#include “ace/config-win32.h” //!<在WIN32环境下使用ACE

#define ACE_USE_WCHAR

#define ACE_HAS_WCHAR //!<支持unicode

其中第一行是用于标准C++跨平台,第二行则是必须要的,表示目录是在win32的环境下进行ace项目。

5)  编译ACE

进入ACE_ROOT/ace目录,双击打开ace_vc9.sln(如果是vs2005,则打开ace_vc8.sln),选择Debug版或Release版(默认Debug),然后在菜单栏中选择“生成/生成解决方案”或按F7开始编译。

编译完成后,在ACE_ROOT/lib目录下生成的文件包含以下几个文件:ACE.dll, ACE.lib, ACEd.dll,
ACEd.lib,其中文件名最后一个字符d表示是该文件Debug版本。

6)  检验ACE

打开VS2008,建立一个空项目,编写ACE代码,或将《ACE程序员手册》的第一个程序COPY过来直接编译(一般会编译出错),需要执行以下操作:

1)  C/C++ à 常规 à 附加包含目录:$(ACE_ROOT)

2)  连接器 à 常规 à 附加库目录: $(ACE_ROOT)/lib

3)  连接器 à 输入 à 附加依赖项: ACEd.lib

然后执行编译程序,运行。

常用API

传输控制协议TCP(Transmission Control
Protocol):TCP提供可靠的、面向连接的运输服务,用于高可靠性数据的传输。TCP协议的可靠性是指保证每个tcp报文能按照发送顺序到达客户端。

Tcp通信过程一般为如下步骤:

  1. )服务器绑定端口,等待客户端连接。

  2. )客户端通过服务器的ip和服务器绑定的端口连接服务器。

  3. )服务器和客户端通过网络建立一条数据通路,通过这条数据通路进行数据交互。

常用API

1. ACE_INET_Addr类。

ACE"地址"类(ACE_Addr)的子类,表示TCP/IP和UDP/IP的地址。它通常包含机器的ip和端口信息,通过它可以定位到所通信的进程。

定义方式:
ACE_INET_Addr addInfo(3000,"192.168.1.100");

常用方法:

  1. get_host_name 获取主机名

  2. get_ip_address 获取ip地址

  3. get_port_number 获取端口号

2. ACE_SOCK_Acceptor类。

服务端使用,用于绑定端口和被动地接受连接。
常用方法:

  1. open 绑定端口

  2. accept建立和客户段的连接

3.ACE_SOCK_Connector类。

客户端使用,用于主动的建立和服务器的连接。
常用方法:

  1. connect() 建立和服务器的连接。

4. ACE_SOCK_Stream类。

客户端和服务器都使用,表示客户段和服务器之间的数据通路。
常用方法:

  1. send () 发送数据

  2. recv () 接收数据

  3. close() 关闭连接(实际上就是断开了socket连接)。

下表给出了服务器端和客户端的传输过程的比较:




















操作

客户端

服务器端

初始化

不需要

调用acceptor.open()绑定端口

建立连接

调用connector.connect()方法

调用acceptor.accept()方法

传输数据

发送:调用peer.recv()方法

接收:调用peer.send()方法

关闭连接

调用peer.close()方法

ACE中UDP通信


udp是一种无连接的协议,提供无连接不可靠的服务。

在ace中,通过ACE_SOCK_Dgram类提供udp通信服务,ACE_SOCK_Dgram和ACE_SOCK_Stream的API非常类似,一样提供了send,recv及close等常用操作,这里就不再累述了。

udp通信时无需像tcp那样建立连接和关闭连接,tcp编程时需要通过accept和connect来建立连接,而udp通信省略了这一步骤,相对来说编程更为简单。

由于udp通信时无建立连接,服务器端不能像Tcp通信那样在建立连接的时候就获得客户端的地址信息,故服务器端不能主动对客户端发送信息(不知道客户端的地址),只有等到收到客户端发送的udp信息时才能确定客户端的地址信息,从而进行通信。

udp通信过程如下:

  1. 服务器端绑定一固定udp端口,等待接收客户端的通信。

  2. 客户端通过服务器的ip和地址信息直接对服务器端发送消息。

  3. 服务器端收到客户端发送的消息后获取客户端的ip和端口信息,通过该地址信息和客户端通信。

和tcp编程相比,udp无需通过acceptor,connector来建立连接,故代码相对tcp编程来说要简单许多。另外,由于udp是一种无连接的通信方式,ACE_SOCK_Dgram的实例对象中无法保存远端地址信息(保存了本地地址信息),故通信的时候需要加上远端地址信息

时间: 2024-08-25 23:14:35

ACE编译安装的相关文章

ubuntu 14.04下ACE的安装

1. 从 ACE 官网(http://download.dre.vanderbilt.edu/)下载 ACE+TAO+CIAO-6.2.7.tar.bz2,放在/home/yourname; 用 tar xvjf ACE+TAO+CIAO-6.1.2.tar.bz2 解压得到 /home/yourname/ACE_wrappers su 到 root 账户下 2. 设置环境变量: ACE_ROOT=/home/yourname/ACE_wrappers; export ACE_ROOT 备注: 

LNMP编译安装遇到问题归总

LNMP编译安装遇到问题归总 1.错误:configure: error: freetype-config not found. 解决:yum install freetype-devel 2.错误:configure: error: libevent >= 1.4.11 could not be found  解决:yum -y install libevent libevent-devel 3.错误:configure: error: Please reinstall the mysql d

dbrd 8.4.6 源代码编译安装

---------------------------- 0.系统环境 ---------------------------- db01 192.168.50.10 /dev/sdb1 主节点 db02 192.168.50.20 /dev/sdb1 备节点 # grep -v "#" /etc/hosts 192.168.50.10 db01 db01.mysql.com 192.168.50.20 db02 db02.mysql.com #一块新硬盘 ll /dev/sd* ll

编译安装php

在编译安装php时需要安装一下软件 yum install -y zlib libxml libjpeg freetype libpng gd curl libiconv zlib-devel libxml2-devel libjpeg-devel freetype-devel libpng-devel gd-devel curl-devel 安装好后需要编译安装libiconv-1.14.tar    这里版本以1.14为列       yum安装不上 ./configure --prefix

linux编译安装mssql客户端和配置php连接mssql

凡是连接数据库,必须安装客户端,我一般写博客都不写原理,但是后来发现回头看自己写的自己都看不懂,所以这章博客会多一点原理性的东西. 数据库的连接一般都是在客户端上完成的,MySQL也不例外,安装mysql时一般都会这么安装: #yum install mysql mysql-server 上面的mysql就是安装的客户端,mysql-server就是服务端,不安装客户端(mysql)就没办法执行mysql连接命令:mysql -u user -p pass -h -P port 而sqlserv

CentOS6.8下编译安装GCC

关于 GCC 在 CentOS 下通过 yum 安装默认版本号,CentOS 5 是 4.1.2:CentOS 6 是 4.4.7:CentOS 7 是 4.8.3.很多时候在编译安装软件都需要高版本的 GCC,否则就会报错.那么如何升级 GCC 的版本呢? 首先要确认升级到的 GCC 版本号.目前 GCC 的最新版已经到了 5.2,而 CentOS 7 则依然使用其 4.8,所以基于兼容性考虑,我选择升级到 4.8.5.GCC 官网:https://gcc.gnu.org 下面开始一步一步来编

MySQL5.5.52编译安装

一.MySQL介绍MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司.MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一.MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL所使用的 SQL 语言

编译安装lamp

软件包链接: http://pan.baidu.com/s/1mijn44g     密码:abja 系统环境:centos 7 开发环境:Development tools.Server Platform Development http+php的方式:PHP模块化 个程序版本: mariadb mariadb-5.5.46-linux-x86_64.tar.gz http httpd-2.4.10.tar.bz2 PHP php-5.4.40.tar.bz2 一.编译安装mariadb ①创

keepalived编译安装

编译安装keepalived 使用源码先安装keepalived 1.2.6 cd/usr/local/src wget http://www.keepalived.org/software/keepalived-1.2.6.tar.gz tarzxf keepalived-1.2.6.tar.gz cdkeepalived-1.2.6 ./configure--prefix=/usr/local/keepalived make makeinstall 所设keepalived安装到/usr/l