Как проверить, активно ли сокетное соединение в Boost::asio?

Я использую Boost::asio для реализации клиент-серверного приложения. Приведенный ниже клиентский код используется для подключения к удаленному серверу.

   try
    {
        boost::asio::io_service         m_io_service;
        boost::asio::ip::tcp::socket    m_socket(m_io_service);
        boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::address::from_string("127.0.0.1"), 17);
        m_socket.connect(endpoint);
    }
    catch (std::exception& e)
    {
        std::cerr << e.what() << std::endl;
    }

На стороне клиента я хочу проверить, активно ли соединение. Функция "m_socket.is_open();" не работает. Когда сокет сервера закрыт, "m_socket.is_open();" по-прежнему возвращает true на стороне клиента. Есть ли способ проверить подключение?

8
задан Sam Miller 1 April 2012 в 15:03
поделиться