#include <boost/asio/deadline_timer.hpp>
#include <boost/asio/io_service.hpp>
#include <boost/asio/ip/tcp.hpp>
#include <boost/asio/read_until.hpp>
#include <boost/asio/streambuf.hpp>
#include <boost/asio/write.hpp>
#include <boost/bind.hpp>
#include <iostream>
using boost::asio::deadline_timer;
using boost::asio::ip::tcp;
class client
{
public:
// 在构造函数的初始化列表中 初始化所有变量
client(boost::asio::io_service& io_service)
: stopped_(false),
socket_(io_service),
deadline_(io_service),
heartbeat_timer_(io_service)
{
}
// 对外公开并使用的唯一接口
//
void start(tcp::resolver::iterator endpoint_iter)
{
// 连接server
start_connect(endpoint_iter);
// 设定连接超时间,并指定回调函数
deadline_.async_wait(boost::bind(&client::check_deadline, this));
}
private:
void stop()
{
stopped_ = true;
boost::system::error_code ignored_ec;
socket_.close(ignored_ec);// 关闭socket
deadline_.cancel();// 取消定时器
h
boost::asio 异步超时机制一
最新推荐文章于 2024-08-03 21:32:19 发布
本文介绍了如何使用Boost.ASIO库创建一个TCP客户端,该客户端具有连接、读取和心跳超时机制。通过设置`deadline_timer`,在连接、读取操作和心跳包发送过程中,当超时发生时,客户端能够自动关闭连接并重新尝试。示例代码展示了如何使用`async_wait`和`async_read_until`进行异步操作,并处理各种可能的错误情况。
摘要由CSDN通过智能技术生成