很开心今天从网上看到了这篇关于协议的简单事例,之前只知道什么tcp协议有什么长度之类的,今天就来实现一个自己的协议吧
包类型 byte 型
包长度 int 型
消息体 byte[]
包总长度为 1 + 4 + 消息体.getBytes().length
***************************************************************************************************************************
客户端发送实现
private void sendTextMsg(DataOutputStream out,String msg ) throws IOException {
byte[] bytes= msg.getBytes();
int totalLen = 1 + 4 + bytes.length;
out.writeByte(1);
out.writeInt(totalLen);
out.write(bytes);
out.flush();
}
********************************************************************************************************************************
服务器端实现协议的解析
private void processMesage(Socket client) throws IOException {
InputStream ins = client.getInputStream();
DataInputStream dins = new DataInputStream(ins);
//服务端解包过程
while(true) {
int totalLen = dins.readInt();
byte flag = dins.readByte();
System.out.println("接收消息类型"+flag);
byte[] data = new byte[totalLen - 4 - 1];
dins.readFully(data);
String msg = new String(data);
System.out.println("发来的内容是:"+msg);
}
}
************************************************************************************
就这么简单 是不是有些像明白了呢