java 的 DataOutputStream 每次write的时候,就把数据发送出去了,如果想要实现缓冲功能,可以用 BufferedOutputStream来实现,代码片段如下:
BufferedOutputStream bufferedOutputStream;
bufferedOutputStream = new BufferedOutputStream(socket.getOutputStream());
//
private void buildSendingMsg(byte[] msg, int protocol) {
int msgSize = msg.length; // (9)'s length
int bufferlen = msgSize + 86; // (1) ~ (9)total length
int len = msgSize + 82; // (3) ~ (9) total length
try {
bufferedOutputStream.write(StreamTool.shortToByte((short)1));
bufferedOutputStream.write(StreamTool.shortToByte((short)len));
byte uuid[] = (ChatRoomData.uuid.toString()).getBytes("UTF-8");
bufferedOutputStream.write(uuid);
int leftSize = 64 - uuid.length;
for(int i =0 ; i< leftSize; i++)
{
bufferedOutputStream.write(0);
}
bufferedOutputStream.write(StreamTool.intToByte(4));
bufferedOutputStream.write(StreamTool.intToByte(5));
bufferedOutputStream.write(StreamTool.shortToByte((short)6));
bufferedOutputStream.write(StreamTool.intToByte(protocol));
bufferedOutputStream.write(StreamTool.intToByte(msgSize));
bufferedOutputStream.write(msg);
bufferedOutputStream.flush();
} catch (IOException e) {
e.printStackTrace();
}
}