发布日期:2023-03-31来源:武汉北大青鸟武汉校区作者:武汉宏鹏
关于java入门的基础知识你了解多少?武汉北大青鸟技术老师为你介绍关于socket 分包和组包,理论知识也很重要,请认真学习并运用到实践中。
建议使用字节流。
消息形式为 包长度(short)+包头(short)+messages(string)+包尾(short)
组包
[java]
private void writesMessage(short cmd , String messages, short move,Socket socket) {
initOutput();
try {
output.writeShort(cmd);
output.writeChars(messages);
output.writeShort(move);
MyUtil.sendMessage(socket, byteOutput.toByteArray());
} catch (Exception e) {
e.printStackTrace();
}
}
private void initOutput()
{
byteOutput = new ByteArrayOutputStream();
output = new DataOutputStream(byteOutput);
}
/**
* 发送数据到网络流
*
* @param socket
* @param bytes
* @throws Exception
*/
public static void sendMessage(Socket socket, byte[] bytes)throws Exception {
DataOutputStream dataOutput = new DataOutputStream(socket.getOutputStream());
// 编写数据的长度
dataOutput.writeShort(bytes.length);
dataOutput.write(bytes);
dataOutput.flush();
}
拆包
[java]
short len = br.readShort();//br 为DataInputStream
short cmd = br.readShort();
byte[] bytes = new byte[len];
br.read(bytes, 0, len-4);
String messgeString = new String(bytes);
System.out.println("条消息:"+messgeString);
short move = br.readShort();
北大青鸟武汉宏鹏光谷校区是湖北省规模更大的计算机培训机构,对于没有计算机基础的学员会设置有相关课程入门,无须担心入学难易问题。课程咨询热线:17740513250。
Copyright (c) 2006-2023 武汉宏鹏教育咨询有限公司 版权所有 All Rights Reserved.