实现代码
OutputStream out = socket.getOutputStream();
DataOutputStream dos = new DataOutputStream(out);
//写入波形
int[] data = packet.getDatas();
dos.writeInt(convertInt(data.length * 2));//波形长度 int=4字节
dos.writeInt(convertInt(packet.getUserString().getBytes().length));//病人信息长度
for (int i : data) {
dos.writeShort(convertShort((short) i));
}
//写入病人信息
byte[] bs = packet.getUserString().getBytes(Charset.forName("Utf-8"));
for (byte b : bs) {
dos.writeByte(b);
}
dos.flush();
packet是1个自定义的实体类里面有 private int[] datas;//波形 private String userString;//用户json
传输的是两个数据包。convertShort方法是高低位字节互换
然后出现部分乱码
传输的数据格式应该没错。我初步怀疑是两个包1起传,出现了粘包,拆包问题。因为其他不需要传包和传1个包的请求就不会乱码。但是我传输这两个包之前都先传输了包的长度信息。没用吗。