【问题标题】:Is there a way to find out in Java the maximum allowed underlying read TCP socket buffer configured in the OS?有没有办法在 Java 中找出操作系统中配置的最大允许底层读取 TCP 套接字缓冲区?
【发布时间】:2017-03-01 04:30:52
【问题描述】:

我知道你可以致电socket.setReceiveBufferSize(int)socket.getReceiveBufferSize()

你可以这样做:

socket.setReceiveBufferSize(Integer.MAX_VALUE);

int after = socket.getReceiveBufferSize();

if (after != Integer.MAX_VALUE) System.out.println("That did not work!");

基于此,我想编写一个算法来正确猜测在操作系统级别配置的最大底层读取套接字缓冲区大小。我怎样才能做到这一点?二进制搜索?还是有更简单的方法?

【问题讨论】:

    标签: java sockets networking tcp nio


    【解决方案1】:

    after 应该是最大尺寸,假设它实际上并没有给你想要的尺寸。使缓冲区太大实际上可能会损害性能(以及浪费内存)

    我会尝试将其设置为您希望的最大值,例如几 MB,如果这也可能是最大值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-04
      • 1970-01-01
      • 2012-10-07
      • 2017-10-02
      • 2017-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多