试图理解Python套接字模块中的缓冲

时间:2015-01-21 00:14:50

标签: python sockets buffer recv

我试图了解套接字模块是如何工作的,我有一个愚蠢的问题:

socket.send()清除之前,socket.recv()在哪里发送了数据?

我相信中间某处必须有一个缓冲区,等待socket.recv()调用来拉出这些数据。

我刚刚对服务器进行了测试,该服务器一次发送了大量数据,然后连接到(故意)非常缓慢地提取数据的客户端。最终的结果是数据在几分之一秒内发送,另一方面,它完全收到10个字节.recv(10)的小块,这需要20秒。

同时存储此数据的位置??,此缓冲区的默认大小是多少?如何访问和修改?

感谢。

2 个答案:

答案 0 :(得分:0)

了解OSI层以及TCP和UDP等不同连接。 socket.send实现TCP数据传输。如果查看OSI层,您会发现第4层(即传输层)将缓冲要传输的数据。缓冲区的默认大小取决于实现。

答案 1 :(得分:0)

OS(内核)缓冲数据。

在Linux上,可以通过/ proc接口访问缓冲区大小参数。有关详细信息,请参阅man 7 socket(最后。)