在 Linux(Ubuntu 12.04)和 Windows 7 上调用此代码,您会得到非常不同的结果:
DatagramSocket socket = new DatagramSocket(4445);
socket.setReceiveBufferSize(Integer.MAX_VALUE);
System.out.println("SO_RX_BUFFER SET TO:"+socket.getReceiveBufferSize());
Linux 你得到: SO_RX_BUFFER SET TO:131071
在 Windows 上你会得到: SO_RX_BUFFER SET TO:2147483647
为什么操作系统之间存在巨大差异?为什么linux的价值这么小?反正有没有增加linux缓冲区的大小?