实战ACE
来源:互联网 发布:淘宝头条怎么注册流程 编辑:程序博客网 时间:2024/06/03 02:27
1,下载哪个版本
我在最开始选择了最新版本5.6,后来才发现:并不是越新越好。本来我只是对网络编程进行学习和尝试,但是ace5.6的库文件需要vs2005才能够编译(.sln文件打开项目)。
所以,我还是选择了ace5.4版本,可以用vc6编译运行:)至于下载的地址嘛,直接上网搜索,或者在官网上翻找——我比较倾向于前者:http://download.dre.vanderbilt.edu/previous_versions/ 而且官网的链接可能发生改变。
2,编译链接、环境设置
下载源文件后的事情,可以按照:http://blog.csdn.net/yubo198/archive/2008/01/30/2072826.aspx 这篇文章进行。
不过值得注意的是:我编译生成的dll文件,是在$(ace_root)/bin目录下,而lib文件,则是在$(ace_root)/ace 目录下,而不是像上文所说的,在$(ace_root)/lib 目录下。不过没有关系,将lib文件拷贝到lib目录下、在系统环境变量path中,添加bin目录即可。
include目录设置(在vc中设置,让编译器能找到头文件)、lib文件设置(在vc中设置)、dll运行库的设置(运行时需要加载,所以要放到path环境变量中),这三个方面搞清楚了,也就差不多了。
3,编写第一个程序
ACE网络程序入口点可不止一个呢!在$(ace_root)/tests目录下,双击test.dsw,可以运行所有示例程序。它们很多使用run_main作为函数入口点函数。你可以尝试编译运行一下这里的程序,满足一下自己的快感:)
需要自己动手编写一个程序了,我简单地写一个:
- #include "ace/SOCK_Stream.h"
- #include "ace/SOCK_Connector.h"
- #include "ace/INET_Addr.h"
- int main(int argc, char** argv)
- {
- const char* pPathName = "index.html";
- const char* pServerHostName = "ace.ece.uci.edu";
- ACE_SOCK_Connector connector;
- ACE_SOCK_Stream peer;
- ACE_INET_Addr peerAddr;
- if (peerAddr.set(80,pServerHostName) == -1)
- {
- return 1;
- }
- else if (connector.connect(peer, peerAddr) == -1)
- {
- return 1;
- }
- return 0;
- }
然后编译运行——居然出错?而且是link出错?
仍旧是动态链接库的问题:要么,在project setting->link里面,老老实实地添加:aced.lib[1],要么使用预编译宏:
- #ifdef _DEBUG
- #pragma comment(lib,"ACEd.lib")
- #else
- #pragma comment(lib,"ACE.lib")
- #endif
另外,注意main函数中需要包含参数:int argc, char** argv,否则也会莫名其妙地link出错(提示main函数出错)。
此外,到网上找到一篇代码编写的帖子:
http://www.yuanma.org/data/2006/0808/article_1331.htm 从ACE源代码看Socket编程,夸赞ace代码优秀的blog
That's all ......Good luck!
[1] 这里还有一个小插曲,我在添加lib文件的时候,由于是多工程,结果不小心将lib文件加入了错误的工程——汗,结果当然还是link出错啦!我就很纳闷了:明明pragma宏可以起作用,在link选项中添加啊就不行?
- 实战ACE
- 实战ACE(二)
- ACE
- ACE
- ACE
- ACE
- ACE
- ACE
- ace
- ACE
- ACE
- JAVA-ACE-架构师系列视频课程- RocketMQ(下)订单实战视频课程
- ACE示例 - ACE Proactor
- [ACE系列] ACE学习
- ACE-ACE的安装
- ACE-ACE简介
- ACE-ACE线程管理机制
- 关于ACE
- XDB: Utility package to change the HTTP and FTP ports used by XML DB.
- 针对 Java 开发人员的 Dojo 概念
- Java内存溢出
- JSON 入门指南
- 用U盘进入有密码的Windows系统
- 实战ACE
- Windows XP 无法安装自动更新
- 磁盘IO性能监控(Linux 和 Windows)
- 2008年11月,我的装系统月 ^_^
- 兄弟,你这样做营销(1)——基本概念
- 著名的 PC Magazine 杂志将完全数字化
- 兄弟,你这样做营销(2)——营销策划
- 商务周刊:手机新三国演义
- VB制作汉字字模的工具