Какова цель разбивки данных на части , если вы можете просто использовать sock.recv (to_read)
recv
не возвращает to_read
байт. Возвращает до to_read
байт. Особенно при больших значениях to_read
очень вероятно, что вам нужно несколько recv
, чтобы получить все запрошенные байты. Таким образом, «порция» необходима для того, чтобы фактически получить все данные.
Обратите внимание, что если цель состоит в том, чтобы поместить все полученные данные в один буфер, на самом деле было бы эффективнее не читать небольшие фрагменты, а пытаться читать все данные сразу и повторять попытки для оставшихся данных снова и снова. пока все данные не будут получены. Таким образом, используется наименьшее количество вызовов recv
и наименьшее количество перераспределения памяти.