代码之家  ›  专栏  ›  技术社区  ›  SJS

tcp服务器的异步读取使用boost::asio打印客户端套接字发送的数据

  •  1
  • SJS  · 技术社区  · 7 年前

    void    Network::start()
    {
        boost::asio::async_write(m_socket, boost::asio::buffer(m_message),
                                 boost::bind(&Network::handleWrite,shared_from_this(),
                                             boost::asio::placeholders::error));
    }
    
    void    Network::handleWrite(const boost::system::error_code &error)
    {
        if (!error)
                doRead();
        else
                std::cout << error.message() << std::endl;
    }
    
    void    Network::handleRead(const boost::system::error_code &error)
        {
        if (!error) {
                std::cout << m_buffer.data()<< std::endl;
                doRead();
        }
        else
                close();
    }
    
    void    Network::doRead()
    {
        boost::asio::async_read(m_socket,
                                boost::asio::buffer(m_buffer),
                                boost::bind(&Network::handleRead,
                                            shared_from_this(),
                                            boost::asio::placeholders::error));
    }
    
    2 回复  |  直到 7 年前
        1
  •  0
  •   sehe    7 年前

    这是什么类型的 m_buffer asio::streambuf 你至少需要使用 bytes_transferred 接收到的参数 handleRead

    有很多回声的例子,所以让我告诉你几个:

        2
  •  0
  •   SJS    7 年前