Задать вопрос

Как узнать длину принимаемого сообщения на сетевых сокетах?

Здравствуйте! Как определить длину входящего сообщения на блокируемом сокете? Я не совсем дурачек! и по этому функцию read() помещаю в цикл с параметром - len равным максимальному размеру буфера, за одну итерацию приходит намного меньше len. Как отгадать размер, int r=read(); в сообщения не лазя, если r вернет -1 или r вернет 0?
  • Вопрос задан
  • 70 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    Infrastructure as a code
    4 месяца
    Далее
  • АПОК
    Сетевой инженер - курс переподготовки
    1 месяц
    Далее
  • ITCOM Academy
    Информационная безопасность. Техническая защита конфиденциальной информации
    14 недель
    Далее
Решения вопроса 1
@javedimka
Хочу сока
Длина входящего сообщения определяется используемым протоколом.

В HTTP, например, для этого используется заголовок Content-Length.
А вот в протоколе RESP (Redis) длина сообщения указана в первом байте этого сообщения.
В каком-нибудь другом протоколе - длина сообщения фиксированная.

В соответствии с правилами используемого протокола и надо читать из сокета данные.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы