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