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