Python sendall()vs C write()

时间:2012-06-26 18:19:16

标签: python apache networking

前几天我看了一些Python代码并遇到了这个问题:

   s.sendall(req % (len(body), body))

其中len(正文)解析为超过500K字节。这被发送到一个Apache服务器,它应该上限为8190字节(我发现当我尝试使用C的write()函数发出类似的请求时)。那么Python中的sendall()有什么特别之处呢?

1 个答案:

答案 0 :(得分:1)

如果您将数据发送到Apache或其他任何内容都无关紧要。我们所讨论的套接字远端的软件对write(2)socket.sendall之间的行为差​​异没有直接影响。

区别在于write(2)写入尽可能多的字节,然后返回一个整数,表示它写了多少。当然,它写的不仅仅是你通过它。但它可能写得更少。对于传递给它的所有字节,内核发送缓冲区可能没有空间。

将此与socket.sendall对比,后者将您传递给它的所有字节写入。如果需要,可以多次调用write(2)来完成此操作。