2015-01-21 44 views
0

我想学习如何插座模块的作品,我有一个愚蠢的问题:试图了解在Python插座模块缓冲

socket.send()的发送之前存储的数据通过socket.recv()被清除?

我相信在等待socket.recv()调用将这些数据取出的过程中,必须有一个缓冲区。

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

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

谢谢。

回答

0

OS(内核)缓冲数据。

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

0

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