我已经读过三件事的组合会导致 TCP 延迟 200 毫秒:Nagle 算法、延迟确认和“写-写-读”组合。但是,我无法使用 Java 套接字重现这种延迟,因此我不确定我是否理解正确。
我正在使用 Java 7 在 Windows 7 上运行测试,其中两个线程在环回地址上使用套接字。我没有触及任何套接字上的 tcpNoDelay 选项(默认为 false),也没有在操作系统上使用任何 TCP 设置。客户端中的主要代码如下。服务器在从客户端接收到的每两个字节后响应一个字节。
for (int i = 0; i < 100; i++) {
client.getOutputStream().write(1);
client.getOutputStream().write(2);
System.out.println(client.getInputStream().read());
}
我没有看到任何延迟。为什么不?