zoukankan      html  css  js  c++  java
  • 基于Boost的同步TCP通信

    1:客户端

      

     1 #include <iostream>
     2 #include <boost/asio.hpp>
     3 
     4 using namespace boost;
     5 using namespace std;
     6 using boost::asio::ip::tcp;
     7 
     8 int main()
     9 {
    10         try
    11         {
    12                 typedef tcp::endpoint endpoint_type;
    13                 typedef tcp::socket     socket_type;
    14                 typedef asio::ip::address       address_type;
    15 
    16                 cout<<"client start."<<endl;
    17                 asio::io_service io;
    18 
    19                 socket_type sock(io);
    20                 endpoint_type ep(address_type::from_string("127.0.0.1"),6688);
    21 
    22                 sock.connect(ep);
    23                 cout<<sock.available()<<endl;
    24 
    25                 vector<char> str(sock.available()+1,0);
    26                 sock.receive(asio::buffer(str));
    27 
    28                 cout<<"receive from"<<sock.remote_endpoint().address();
    29                 cout<<&str[0]<<endl;
    30 
    31         }
    32         catch(std::exception& e)
    33         {
    34                 cout<<e.what()<<endl;
    35         }
    36         return 0;
    37 }

    2:服务端

      

     1 #include <iostream>
     2 #include <boost/asio.hpp>
     3 
     4 using namespace boost;
     5 using namespace std;
     6 using boost::asio::ip::tcp;
     7 
     8 int main()
     9 {
    10         try
    11         {
    12                 typedef tcp::acceptor acceptor_type;
    13                 typedef tcp::endpoint endpoint_type;
    14                 typedef tcp::socket     socket_type;
    15 
    16                 cout<<"server start."<<endl;
    17                 asio::io_service io;
    18 
    19                 acceptor_type acceptor(io,endpoint_type(tcp::v4(),6688));
    20                 cout<<acceptor.local_endpoint().address()<<endl;
    21 
    22                 for(;;)
    23                 {
    24                         socket_type sock(io);
    25                         acceptor.accept(sock);
    26 
    27                         cout<<"client:";
    28                         cout<<sock.remote_endpoint().address()<<endl;
    29 
    30                         sock.send(asio::buffer("hello asio"));
    31                 }
    32         }
    33         catch(std::exception& e)
    34         {
    35                 cout<<e.what()<<endl;
    36         }
    37         return 0;
    38 }
  • 相关阅读:
    怎样从外网访问内网MongoDB数据库?
    怎样从外网访问内网MySQL数据库?
    怎样从外网访问内网Tomcat?
    怎样从外网访问内网Oracle数据库?
    怎样从外网访问内网WampServer?
    怎样从外网访问内网Jupyter Notebook?
    怎样从外网访问内网RESTful API?
    怎样从外网访问内网WebSphere?
    系统性能测试步骤
    性能相关面试题
  • 原文地址:https://www.cnblogs.com/zhaohu/p/9173366.html
Copyright © 2011-2022 走看看