zoukankan      html  css  js  c++  java
  • ACE学习笔记(2)——第一个例子:TCP

      从网上看到一个简单的例子(抱歉,忘记出处了),准备拿来编译看看。
      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

     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    }
       
      2. VC目录里加入包含文件ACE_wrappers\和库文件ACE_wrappers\lib\。
      3. 在项目属性里加入库文件,Debug模式加入ACEd.lib,Release模式加入ACE.lib。
      4. 将ACE_wrappers\lib\目录设置为项目调试的运行目录,或加到系统环境变量中。
      4. 编译,成功;运行,成功。
  • 相关阅读:
    HDU 5273 Dylans loves sequence 暴力递推
    HDU 5285 wyh2000 and pupil 判二分图+贪心
    HDU 5281 Senior's Gun 贪心
    HDU 5651 xiaoxin juju needs help 逆元
    HDU 5646 DZY Loves Partition
    HDU 5366 The mook jong
    HDU 5391Z ball in Tina Town 数论
    HDU 5418 Victor and World 允许多次经过的TSP
    HDU 5642 King's Order dp
    抽屉原理
  • 原文地址:https://www.cnblogs.com/gamesacer/p/Acer.html
Copyright © 2011-2022 走看看