Как бороться со случайной ошибкой eof при чтении на сокете TCP с помощью asio? - PullRequest
0 голосов
/ 09 мая 2019

Сценарий:

Этот вопрос состоит в том, чтобы понять, что означает ошибка EOF и как с ней бороться.

У меня есть клиент и сервер, написанные с использованием boost asio 1.64. Мои приложения работают довольно хорошо около 3-4 часов, когда пакеты читаются взад и вперед, как минимум 5 пакетов, отправляемых сервером каждую секунду и читаемых клиентским приложением.

Проблема и вопрос:

Но иногда через 5-6 часов я внезапно получаю ошибку eof! Я не уверен, что это значит. Разъем по какой-то причине закрылся? Могу ли я проигнорировать это и продолжить чтение следующего пакета? Должен ли я попробовать это как потерю соединения и «перезапустить мою логику подключения к пиру»?

Ошибка EOF говорится - «Конец потока может привести к нарушению контракта функциями read, async_read, read_until или async_read_until»? Но до появления ошибки прошло более 100 000 успешных операций чтения. Что это означает? Ожидая некоторой информации и понимания об ошибке eof в этом вопросе.

...