【问题标题】:Scatter/gather socket write in Python用 Python 编写分散/收集套接字
【发布时间】:2012-06-12 18:16:54
【问题描述】:

在 POSIX C 中,我们可以使用 writev 一次将多个数组写入文件描述符。当您必须连接多个缓冲区以形成单个消息以通过套接字发送时,这很有用(例如,考虑 HTTP 标头和正文)。这样我就不需要调用send 两次,一次用于标头,一次用于正文(防止消息在线路上分成不同的帧),也不需要在发送之前连接缓冲区。

我的问题是,是否有 Python 等价物?

【问题讨论】:

    标签: python sockets


    【解决方案1】:

    Python 3.3 即将发布,现在正在进行 alpha 测试。见socket.sendmsg

    【讨论】:

      【解决方案2】:
      1. Python 支持os.writev()sendmsg()。这些函数是原子的,因此相当于分别调用 write()send() 并连接缓冲区。

      2. TCP_CORK。您可能会说内核在未塞住之前不要发送部分帧。

      使用任何一种技术,您都可以控制部分 TCP 帧。

      【讨论】:

      • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
      • @gonz 我回答了这个问题。我不是批评或要求澄清。
      • 我查看的原始答案(在您编辑之前)是“另外,Python 支持 os.writev()”,这似乎是对 Ned 答案的扩展评论。现在看起来好多了,感谢改进! +1
      猜你喜欢
      • 2010-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多