【问题标题】:Recommended TCP buffer size? Recommended to break it up?推荐的 TCP 缓冲区大小?建议分手?
【发布时间】:2012-04-15 22:15:34
【问题描述】:

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

【问题讨论】:

    标签: java c# xml buffer


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        如建议的那样,如果您在接收端使用流解析器,则缓冲区大小并不重要。在准备好消息时发送消息,以减少因批处理整个文档而导致的延迟。

        【讨论】:

          猜你喜欢
          • 2021-11-11
          • 2023-03-22
          • 2012-01-10
          • 1970-01-01
          • 2013-09-01
          • 2015-05-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多