我有一个设备可以非常快地向 Windows XP 操作系统发送具有 1440 字节有效负载的 TCP 数据包。我将 TcpAckFrequency 设置为 0,即收到包后立即发回 ACK。我编写了一个 Java 应用程序,它在线程中读取套接字:
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
in.read(charArray, 0, 720);
我的问题是Windows缓冲区在收到一些(50-60)数据包后变满,然后发送一个DUP ACK,这会减慢通信速度。
我不明白为什么它会变满,因为我总是在读取缓冲区?