// // Created by pengx on 2025/7/11. // #include "utils.hpp" Utils::Utils() { } Utils::~Utils() = default; bool Utils::is_network_reachable(const std::string &host, const std::string &service) { try { boost::asio::io_context io; boost::asio::ip::tcp::resolver resolver(io); boost::asio::ip::tcp::socket socket(io); const auto endpoints = resolver.resolve(host, service); // 设置连接超时为1000ms boost::asio::deadline_timer timer(io, boost::posix_time::millisec(1000)); boost::system::error_code ec; // 异步连接并在超时后取消 socket.async_connect(endpoints->endpoint(), [&](const boost::system::error_code &connect_ec) { if (!connect_ec) { timer.cancel(); } }); timer.async_wait([&](const boost::system::error_code &) { if (socket.is_open()) { socket.close(); } }); io.run(ec); return !ec && socket.is_open(); } catch (std::exception &e) { std::cerr << "Network error: " << e.what() << std::endl; return false; } }