[英]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.