Что является самым простым способом проверить, был ли сокет закрыт на удаленной стороне соединения? socket::is_open()
возвращает true, даже если он закрыт на удаленной стороне (я использую boost::asio::ip::tcp::socket
).Как проверить, закрыт ли сокет в Boost.Asio?
Я мог бы попытаться прочитать из потока и посмотреть, удастся ли ему это сделать, но мне придется изменить логику моей программы, чтобы она работала таким образом (я не хочу, чтобы данные извлекались из потока на точка проверки).
Зачем вам нужно знать, закрыто ли удаленное соединение? – outis
Кроме того, вы используете протокол приложения вашего собственного дизайна или стандартный протокол? – outis
Я пишу базовую программу чата, и мне нужно уведомить пользователя о том, что другой человек закрыл приложение. У меня есть собственный протокол, и я уже добавил сообщение «Quit». Единственный недостаток заключается в том, что он не отправляется, если приложение убито/сбой/etc. – Hali