小明思考

高性能服务器端计算
posts - 70, comments - 428, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

ACE Beginner

Posted on 2005-11-24 11:28 小明 阅读(3577) 评论(8)  编辑 收藏 引用 所属分类: C/C++Network/ACE

1.download ACE from: www.cs.wustl.edu/~schmidt/ACE.html

2.build ACE in Visual Studio,generate ACE.lib(dll)[for release] & ACEd.lib(dll)[for debug]

3.create a empty project named: ACETest

4.add ACE path into Project Include Path and add ACE/lib into project lib path

5.create a file(hello.cpp)

#ifdef _DEBUG
#pragma comment(lib,
"ACED.lib")
#else
#pragma comment(lib,
"ACE.lib")
#endif

#include 
<ace/OS_main.h>
#include 
<ace/ACE.h>
#include 
<ace/Log_Msg.h>
#include 
<ace/SOCK_Connector.h>

int main(int argc, char *argv[])
{
 ACE_INET_Addr addr(
1500,"127.0.0.1"); //remote address
 ACE_SOCK_Connector con; // connetor for socket client
 ACE_SOCK_Stream stream; // stream is for socket read/write

 
if(con.connect(stream,addr)==-1//connect to remote address
 {
  ACE_DEBUG ((LM_DEBUG,
   ACE_TEXT (
"(%P|%t) %p\n"),
   ACE_TEXT (
"connection failed")));
  
return 1;
 }

 
const char msg[] = "Hello,ACE!";

 stream.send_n(msg,
sizeof(msg)); // send_n function send exactly n bytes

 
char buffer[1024= {0};

 
if(stream.recv(buffer,sizeof(buffer)-1)==-1// just call socket recv
 {
  ACE_DEBUG ((LM_DEBUG,
   ACE_TEXT (
"(%P|%t) %p\n"),
   ACE_TEXT (
"recv failed")));
  
return 1;
 }
 ACE_DEBUG ((LM_DEBUG,
  ACE_TEXT (
"(%P|%t) recv:%s\n"),
  buffer));

 
if (stream.close () == -1//close the connection
 {
  ACE_ERROR ((LM_ERROR,
   ACE_TEXT (
"(%P|%t) %p\n"),
   ACE_TEXT (
"close")));
  
return 1;
 }

 
return 0;
}



6.build & execute

Feedback

# re: ACE Beginner  回复  更多评论   

2005-11-24 18:02 by worm
执行一次就退出呼!加加料哦

# re: ACE Beginner  回复  更多评论   

2006-01-08 21:14 by 任我行
恩,这个不错。对网络来说很简单。


学新的。。。。

# 找不到头文件  回复  更多评论   

2006-02-17 16:21 by 晓晓
#include <ace/OS_main.h>
#include <ace/ACE.h>
#include <ace/Log_Msg.h>
#include <ace/SOCK_Connector.h>

# re: ACE Beginner  回复  更多评论   

2006-03-19 23:01 by 橙子
前面应该加个 WSAStartup

# re: 橙子  回复  更多评论   

2006-03-21 09:29 by 小明
不需要WSAStartup

WSAStartup是Windows平台需要的
记住ACE是跨平台的,所以ACE会帮你去做这些事情,而不需要你自己去做。

# re: ACE Beginner  回复  更多评论   

2006-03-25 18:20 by Tauruser
什么是ACE?

# re: ACE Beginner  回复  更多评论   

2006-08-16 18:17 by Kennen
我的程序编译正确,但是会进入
if(con.connect(stream,addr)==-1) //connect to remote address
{
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%P|%t) %p\n"),
ACE_TEXT ("connection failed")));
return 1;
}
然后退出,不知何故?
ace5.5+.net2005

# re: ACE Beginner  回复  更多评论   

2006-10-11 14:48 by 阿苏大发动司法
能不能弄个动态链接的例子阿?你上面的好像都是静态的

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理