Boost.asio 之iostream类

1.名称

  ip::tcp::iostream

2.父类

  std::basic_iostream

3.TCP通信(控制台程序)

服务端 Demo

    io_service io;

    ip::tcp::endpoint ep(ip::tcp::v4(), 6688);
    ip::tcp::acceptor acceptor(io, ep);

    for (;;)
    {
        ip::tcp::iostream tcp_stream;
        acceptor.accept(*tcp_stream.rdbuf());
        tcp_stream << "hello tcp stream." << std::endl;
    }
    getchar();
    std::cout << "Hello World!\n"; 

客户端

    //iostream_tcp_client
    for (int i = 0; i < 5; ++i)
    {
        ip::tcp::iostream tcp_stream("127.0.0.1", "6688");
        std::string str;
        getline(tcp_stream, str);
        std::cout << str << std::endl;
    }

4.UDP通信(控制台)

服务端 demo

    //udp_syn_server_start
    std::cout << "udp server start." << std::endl;
    io_service io;

    ip::udp::socket sock(io,
        ip::udp::endpoint(ip::udp::v4(), 6699));

    for (;;)
    {
        char buf[1];
        ip::udp::endpoint ep;

        boost::system::error_code ec;
        sock.receive_from(buffer(buf), ep, 0, ec);

        if (ec && ec != error::message_size)
        {
            throw boost::system::system_error(ec);
        }

        std::cout << "send to " << ep.address() << std::endl;
        sock.send_to(buffer("hello asio udp."), ep);
    }
    //udp_syn_server_end

客户端 demo

    //udp_syn_client_start
    std::cout << "client start." << std::endl;
    io_service io;

    ip::udp::endpoint send_ep(
        ip::address::from_string("127.0.0.1"), 6699);

    ip::udp::socket sock(io);
    sock.open(ip::udp::v4());

    char buf[1];
    sock.send_to(buffer(buf), send_ep);

    std::vector<char> v(100, 0);
    ip::udp::endpoint recv_ep;
    sock.receive_from(buffer(v), recv_ep);
    std::cout << "recv from " << recv_ep.address() << std::endl;
    std::cout << &v[0] << std::endl;
    //udp_syn_client_end

 

posted @ 2019-05-15 17:16  N_zero  阅读(537)  评论(0)    收藏  举报