connect 连接不上会在这里停一会,会耗费资源,可以加一个超时检测去处理连接不上的socket节省开销;
// 创建一个 deadline_timer 对象
deadline_timer timer(io_service);
// 设置超时时间为5秒
timer.expires_from_now(boost::posix_time::seconds(5));
// 异步等待定时器到期
timer.async_wait([&socket](const boost::system::error_code& error) {
if (!socket.is_open()) {
// 连接超时,关闭套接字
socket.close();
// 进一步处理超时情况
}
});
// 异步连接操作
boost::asio::async_connect(socket, endpoints,
[&timer](const boost::system::error_code& error, boost::asio::ip::tcp::resolver::iterator) {
// 连接完成时取消定时器
timer.cancel(); // 取消本次异步操作
if (!error) {
// 完成连接操作
} else {
// 处理连接错误
}
});