推荐的TCP缓冲区大小?建议分手吗?

时间:2012-04-15 22:15:34

标签: java c# xml buffer

我正在编写一个应用程序,它从服务器获取XML文件,然后使用其中的数据。我的问题是,因为TCP确保所有数据包到达并且超出我的控制范围来控制它如何将数据分开,所以限制缓冲区大小是否有意义?如果是这样,我可以以块的形式发送数据并在客户端重新组装它们。显然我无法创造无限缓冲。 XML可以变得相当大,高达256kb,我有点担心保留这个大小的缓冲区。数据由Android设备提取,但我们可以假设设备有1GB的RAM。

3 个答案:

答案 0 :(得分:0)

TCP接收缓冲区大小与正在传输的数据大小无关。显然,您可以通过TCP流传输数GB的数据,并且不需要缓冲区具有相同的大小。缓冲区大小通常与性能(端点上的网络和处理器)有关,并且可能很小 - 在大多数情况下,您可能不必更改默认设置。

答案 1 :(得分:0)

您无需在客户端重新组装它。只需将XML解析器直接附加到套接字InputStream。

答案 2 :(得分:0)

网络堆栈中的默认缓冲区通常平均调整为良好。除非您的应用程序特别不寻常(听起来不像),否则最好不要更改缓冲区大小。端点不同的事实也会导致紧张,导致无法轻易选择同时更优化的任何东西。

正如所建议的,如果在接收端使用流式解析器,则缓冲区大小并不重要。准备好发送消息,以减少批处理整个文档所造成的延迟。