接受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
的处理程序。当然,这也发生在async_write
的另一个处理程序(Write_handler)上。知道我哪里做错了吗?
std::bind(&TcpServer::Accept_Handler, this, std::placeholder::_1)。并且双击写处理程序签名
相关文章:
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 为什么我的 IExtractIcon 处理程序没有被调用?
- 在遍历处理程序的向量时注册和注销处理程序
- 有可能在信号处理程序中设置promise吗
- 在信号处理程序中捕获C++未处理的异常并恢复应用程序
- 通过安装信号处理程序关闭多线程应用程序
- QDateTime::toString() 在退出处理程序中使用时失败
- 如何在 WindowProc 处理程序中区分箭头键和数字键盘?
- async_write完成处理程序最早何时完成?
- C++事件系统 - 多态事件和事件处理程序
- 具有shared_ptr的处理程序中的分段错误
- 为什么我的信号处理程序只执行一次?
- GTK C++:找不到信号处理程序 您是否使用 -rdynamic 进行了编译?
- 如何使用从处理程序调度的最终回调将响应异步返回给调用方on_read?
- C++ 在信号处理程序后继续执行
- wxWidgets 拖放文件事件处理程序初始化问题(无效static_cast)
- 某些 boost::asio 异步函数是否将处理程序连接到操作,以便处理程序被触发一次?
- 没有信号处理程序的POSIX定时器的目的是什么?
- 处理程序的模块列表中有一个错误的模块"WebSocketModule"