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

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

Здравствуйте! Как определить длину входящего сообщения на блокируемом сокете? Я не совсем дурачек! и по этому функцию read() помещаю в цикл с параметром - len равным максимальному размеру буфера, за одну итерацию приходит намного меньше len. Как отгадать размер, int r=read(); в сообщения не лазя, если r вернет -1 или r вернет 0?
  • Вопрос задан
  • 63 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@javedimka
Хочу сока
Длина входящего сообщения определяется используемым протоколом.

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

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

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

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