2011-05-24 59 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