ACE学习笔记(2)——第一个例子:TCP
从网上看到一个简单的例子(抱歉,忘记出处了),准备拿来编译看看。
1. 在VC里新建一个工程,将代码放进去。
2. VC目录里加入包含文件ACE_wrappers\和库文件ACE_wrappers\lib\。
3. 在项目属性里加入库文件,Debug模式加入ACEd.lib,Release模式加入ACE.lib。
4. 将ACE_wrappers\lib\目录设置为项目调试的运行目录,或加到系统环境变量中。
4. 编译,成功;运行,成功。
1. 在VC里新建一个工程,将代码放进去。
1
//服务器端代码:
2
#include <iostream>
3
#include <string>
4
5
#include <ace/ACE.h>
6
#include <ace/SOCK_Acceptor.h>
7
#include <ace/SOCK_Stream.h>
8
9
int main( int argc, char* argv[] )
10
{
11
ACE::init();
12
13
std::string str;
14
str.resize( sizeof( "hello world" ) );
15
16
//设置服务器地址
17
ACE_INET_Addr peer_addr( 5050, "127.0.0.1" );
18
19
ACE_SOCK_Stream peer_stream;
20
21
//创建被动连接角色对象
22
ACE_SOCK_Acceptor peer_acceptor;
23
//开启被动连接对象,将对象绑定到一个地址上
24
peer_acceptor.open( peer_addr );
25
26
//等待连接
27
peer_acceptor.accept( peer_stream );
28
29
//数据通讯
30
peer_stream.recv( (void*)str.c_str(), str.length() );
31
std::cout << "from client message : " << str << std::endl;
32
peer_stream.send( str.c_str(), str.length() );
33
34
ACE::fini();
35
system("pause"); // 这句是我加的,为了看得方便点
36
return 0;
37
}
38![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
38
![](/Images/OutliningIndicators/None.gif)
1
//客户端代码:
2
#include <iostream>
3
#include <string>
4
5
#include <ace/ACE.h>
6
#include <ace/INET_Addr.h>
7
#include <ace/SOCK_Connector.h>
8
#include <ace/SOCK_Stream.h>
9
10
int main( int argc, char* argv[] )
11
{
12
ACE::init();//初始化ACE库,在windows下一定要
13
14
std::string str = "hello world";
15
16
//设置服务器地址
17
//第一个参数是端口,第二个是ip地址,也可以是域名。
18
//可以先定义一个地址对象,再用ACE_INET_Addr的set函数来设定。
19
//地址的配置很多,具体的参照文档
20
ACE_INET_Addr peer_addr( 5050, "127.0.0.1" );
21
ACE_SOCK_Stream peer_stream;//定义一个通讯队形
22
23
ACE_SOCK_Connector peer_connector;//定义一个主动连接对象
24
peer_connector.connect( peer_stream, peer_addr );//发起一个连接
25
26
peer_stream.send( str.c_str(), str.length() );//发送数据到服务器
27
28
str.erase();
29
str.resize( sizeof( "hello world" ) );
30
peer_stream.recv( (void*)str.c_str(), str.length() );//接收来自服务器的信息
31
32
std::cout << "from server message : " << str << std::endl;
33
34
ACE::fini();
35
system("pause"); // 这句是我加的,为了看得方便点
36
return 0;
37
}
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
2. VC目录里加入包含文件ACE_wrappers\和库文件ACE_wrappers\lib\。
3. 在项目属性里加入库文件,Debug模式加入ACEd.lib,Release模式加入ACE.lib。
4. 将ACE_wrappers\lib\目录设置为项目调试的运行目录,或加到系统环境变量中。
4. 编译,成功;运行,成功。