簡體   English   中英

接受Boost ASIO異步處理程序

[英]Accept handler for Boost ASIO async

因此,我試圖使用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的處理程序。 當然,這也會發生在其他處理程序(Write_handler)和async_write 知道我做錯了什么嗎?

std :: bind(&TcpServer :: Accept_Handler,這是std :: placeholder :: _ 1)。 並仔細檢查處理程序簽名

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM