Ich verwende den Boost :: Asio, um eine Client/Server-Anwendung zu implementieren. Der folgende Clientcode wird zum Herstellen einer Verbindung mit dem Remoteserver verwendet.Wie überprüft man, ob eine Socket-Verbindung in Boost :: asio aktiv ist?
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;
}
Auf der Clientseite möchte ich überprüfen, ob die Verbindung aktiv ist. Die Funktion "m_socket.is_open();
" funktioniert nicht. Wenn der Server-Socket geschlossen wird, gibt "m_socket.is_open();
" auf Clientseite weiterhin True zurück. Gibt es eine Möglichkeit, die Verbindung zu überprüfen?
Ich hatte einen ähnlichen Zweifel hier: http://Stackoverflow.com/q/1511129/174605 und es gibt eine feine Antwort von Joshperry – coelhudo