2011-05-24 56 views
3

这里是我的代码的摘录:如何让Java一起发送多条消息?

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

它被作为2包发送,即使第一个是只有4个字节长。除了将字节数组连接在一起以将它们发送到一起之外,还有另一种方法吗?我已经试过setTcpNoDelay(false)

回答

3

当然。使用BufferedOutputStream。 :-P

setTcpNoDelay更改操作系统发送数据包的方式,而不是Java如何发送数据包。如上所述,改变后者的唯一方法是缓冲输出。

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

+1

那么明显...谢谢完成。 – 2011-05-24 12:22:33

1

与缓冲输出流,把它包

0

我想禁用的Nagle由setTcpNoDelay(true)

+1

OP想要_enable_ Nagle的算法,而不是禁用它。 :-) – 2011-05-24 12:15:29

+0

@chris Nagle算法意味着通过绑定一个数据包中的多个数据来发送更少数量的数据包。所以我认为他需要禁用Nagle – 2011-05-24 12:17:01

+0

正确,OP想要将所有数据合并到一个数据包中。 – 2011-05-24 12:18:26

相关问题