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. 编译,成功;运行,成功。
  • 相关阅读:
    cocos2d-x CSV文件读取 (Excel生成csv文件)
    cocos2d-x 中 xml 文件读取
    String 类的实现
    json 文件解析与应用
    设计模式 之 《简单工厂模式》
    C++ 0X 新特性实例(比较常用的) (转)
    CCSpriteBatchNode CCSpriteFrameCache
    LongAdder
    ConcurrentHashMap源码
    HashMap源码
  • 原文地址:https://www.cnblogs.com/gamesacer/p/Acer.html
Copyright © 2011-2022 走看看