Używam Boost :: asio do implementacji aplikacji klient/serwer. Poniższy kod klienta służy do łączenia się ze zdalnym serwerem.Jak sprawdzić, czy połączenie z gniazdem znajduje się pod napięciem w 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;
}
Po stronie klienta chcę sprawdzić, czy połączenie jest aktywne. Funkcja "m_socket.is_open();
" nie działa. Gdy gniazdo serwera zostanie zamknięte, "m_socket.is_open();
" nadal zwraca wartość true po stronie klienta. Czy istnieje sposób sprawdzenia połączenia?
Miałem podobną wątpliwość tutaj: http://stackoverflow.com/q/1511129/174605 i istnieje drobna odpowiedź od joshperry – coelhudo