3

这是我的代码的摘录:

OutputStream out = this.socket.getOutputStream();
out.write(fourBytes);
out.write(someBytes);
out.flush();

这在 2 个包中发送,即使第一个包只有 4 个字节长。除了将字节数组连接在一起以将它们一起发送之外,还有其他方法吗?

我已经试过了setTcpNoDelay(false)

4

3 回答 3

3

当然。使用BufferedOutputStream. :-P

setTcpNoDelay改变操作系统发送数据包的方式,而不是 Java 发送数据包的方式。正如我上面建议的那样,改变后者的唯一方法是缓冲你的输出。

顺便说一句,这不会影响您的数据真正分成多少个数据包。同样,这取决于操作系统以及接收端指定的窗口。因此,您不能使用数据包来分隔数据。

于 2011-05-24T12:08:18.163 回答
1

用缓冲的输出流包装它

于 2011-05-24T12:10:43.827 回答
0

我认为禁用 Nagle 是由setTcpNoDelay(true)

于 2011-05-24T12:10:47.080 回答