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