【发布时间】:2012-06-12 18:16:54
【问题描述】:
在 POSIX C 中,我们可以使用 writev 一次将多个数组写入文件描述符。当您必须连接多个缓冲区以形成单个消息以通过套接字发送时,这很有用(例如,考虑 HTTP 标头和正文)。这样我就不需要调用send 两次,一次用于标头,一次用于正文(防止消息在线路上分成不同的帧),也不需要在发送之前连接缓冲区。
我的问题是,是否有 Python 等价物?
【问题讨论】:
在 POSIX C 中,我们可以使用 writev 一次将多个数组写入文件描述符。当您必须连接多个缓冲区以形成单个消息以通过套接字发送时,这很有用(例如,考虑 HTTP 标头和正文)。这样我就不需要调用send 两次,一次用于标头,一次用于正文(防止消息在线路上分成不同的帧),也不需要在发送之前连接缓冲区。
我的问题是,是否有 Python 等价物?
【问题讨论】:
Python 3.3 即将发布,现在正在进行 alpha 测试。见socket.sendmsg。
【讨论】:
Python 支持os.writev() 和sendmsg()。这些函数是原子的,因此相当于分别调用 write() 和 send() 并连接缓冲区。
有TCP_CORK。您可能会说内核在未塞住之前不要发送部分帧。
使用任何一种技术,您都可以控制部分 TCP 帧。
【讨论】: