2012-06-08 25 views
4

В POSIX C мы можем использовать writev для записи сразу нескольких массивов в дескриптор файла. Это полезно, когда вам приходится конкатенировать несколько буферов, чтобы сформировать одно сообщение для отправки через сокет (например, заголовок и тело HTTP). Таким образом, мне не нужно дважды звонить send, один раз для заголовка и один раз для тела (что не позволяет разделить сообщения в разных кадрах на проводе), и мне не нужно конкатенировать буферы перед отправкой.Сброс/сборка сокета пишите в Python

Мой вопрос в том, есть ли эквивалент Python?

ответ

2
  1. Python поддерживает os.writev(), а также sendmsg(). Эти функции являются атомарными, поэтому они эквивалентны вызовам write() и send() соответственно с конкатенированным буфером.

  2. TCP_CORK. Вы можете сказать, что ядро ​​не посылает частичные кадры до тех пор, пока они не будут забиты.

Используя любую технику, вы можете иметь контроль над частичными кадрами TCP.

+0

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. - [Из обзора] (/ review/low-quality-posts/12423944) – gonz

+0

@gonz Я ответил на вопрос. Я не критикую и не прошу разъяснений. – socketpair

+0

Исходный ответ, который я рассмотрел (до вашего редактирования), был «Также, Python поддерживает os.writev()», который, как представляется, является комментарием, расширяющим ответ Ned. Теперь это выглядит намного лучше, спасибо за улучшение! +1 – gonz

Смежные вопросы