Вступить в клуб →
лёгкаявопросLinux, многопоточность и сеть

Что означает recv, вернувший ноль

Сервер обслуживает TCP-соединение в цикле. Очередной вызов recv на блокирующем сокете возвращает ровно 0.

Что это означает и что делать дальше?

  • Данных пока нет: вызов нужно просто повторить позже, соединение при этом остаётся полностью рабочим
  • Произошла ошибка ввода-вывода: её конкретный код нужно смотреть в errno и уже по нему решать, что делать дальше
  • Противоположная сторона закрыла соединение: новых данных не будет, сокет пора закрывать и убирать из набора
  • Переполнен буфер приёма сокета, из-за этого вызов и вернул ноль — размер буфера надо увеличить

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела