接受Boost ASIO异步处理程序

Accept handler for Boost ASIO async

本文关键字:处理 程序 异步 ASIO Boost 接受      更新时间:2023-10-16

所以我试图写一个类使用Boost ASIO发送数据异步。通过TCP套接字。

我的cpp文件

#include <TcpServer.h>
using namespace boost::asio;
using namespace boost::asio::ip;
TcpServer::TcpServer(unsigned short port = 1700)
: ipPort(port){
io_service svc;  
tcp::socket socket(svc);
tcp::acceptor acc(svc, tcp::endpoint(tcp::v4(), ipPort));
acc.listen();
acc.async_accept(socket, TcpServer::Accept_Handler);
 boost::thread bt(boost::bind(&io_service::run, &svc));
}
void TcpServer::Write_Handler(const boost::system::error_code& ec){
  if (!ec)
    {
     std::cout << "Just sent some %0.2f" << yawData << std::endl;
    }
}
 void TcpServer::Accept_Handler(const boost::system::error_code& ec){
   if (!ec)
     {
      async_write(socket, buffer("data"), TcpServer::Write_Handler);
    }
}
void UpdateYaw(double data) {
   yawData = data;

}

  TcpServer::~TcpServer(){
    svc.stop();
 }

和它的头

#pragma once
#include <boost/asio.hpp>
#include <boost/thread.hpp>

 class TcpServer {
  private:
   double yawData = 0;
   unsigned short ipPort;
   void Write_Handler(const boost::system::error_code&);
   void Accept_Handler(const boost::system::error_code&);
  public:
   TcpServer(unsigned short );
   void UpdateYaw(double);
   ~TcpServer();
  };
我在编译时得到的错误是
 no matching function for call to ‘boost::asio::basic_socket_acceptor<boost::asio::ip::tcp>::async_accept(boost::asio::ip::tcp::socket&, <unresolved overloaded function type>)’acc.async_accept(socket, TcpServer::Accept_Handler);

它只是不喜欢我作为参数传递给async_accept的处理程序。当然,这也发生在async_write的另一个处理程序(Write_handler)上。知道我哪里做错了吗?

std::bind(&TcpServer::Accept_Handler, this, std::placeholder::_1)。并且双击写处理程序签名