这是我的代码的摘录:
OutputStream out = this.socket.getOutputStream();
out.write(fourBytes);
out.write(someBytes);
out.flush();
这在 2 个包中发送,即使第一个包只有 4 个字节长。除了将字节数组连接在一起以将它们一起发送之外,还有其他方法吗?
我已经试过了setTcpNoDelay(false)
。
当然。使用BufferedOutputStream
. :-P
setTcpNoDelay
改变操作系统发送数据包的方式,而不是 Java 发送数据包的方式。正如我上面建议的那样,改变后者的唯一方法是缓冲你的输出。
顺便说一句,这不会影响您的数据真正分成多少个数据包。同样,这取决于操作系统以及接收端指定的窗口。因此,您不能使用数据包来分隔数据。
用缓冲的输出流包装它
我认为禁用 Nagle 是由setTcpNoDelay(true)