История изменений
Исправление
Legioner,
(текущая версия)
:
Как корректно выполнить отключение от сервера, чтобы сервер (перед первым вызовом write_some) «знал», что соединение закрыто?
Можно попробовать прочитать из сокета. Если клиент успешно закрыл соединение (обрати внимание на «успешно», если у него уборщица выдернула сетевой кабель, это не «успешно»), то ты прочитаешь 0 байтов (т.е. конец файла, или как там в бусте это показано). Если твой протокол подразумевает, что после закрытие соединения со стороны клиента запись в него не положена, ты по этому факту просто закрываешь соединение со своей стороны (со стороны сервера) и всё.
Тогда предыдущий вопрос открыт: кто знает, подскажите пожалуйста, как средствами boost asio отправить пакет с флагом RST?
RST это принудительное закрытие соединения. По идее оно не должно использоваться при нормальном функционировании.
Исходная версия
Legioner,
:
Как корректно выполнить отключение от сервера, чтобы сервер (перед первым вызовом write_some) «знал», что соединение закрыто?
Можно попробовать прочитать из сокета. Если клиент успешно закрыл соединение (обрати внимание на «успешно», если у него уборщица выдернула сетевой кабель, это не «успешно»), то ты прочитаешь 0 байтов (т.е. конец файла, или как там в бусте это показано). Если твой протокол подразумевает, что после закрытие соединения со стороны клиента запись в него не положена, ты по этому факту просто закрываешь соединение со своей стороны (со стороны сервера) и всё.