首先说一下ByteBuffer 这个抽象类,一般在服务器和客户端之间的通信他们之间的通信格式都是固定的,都有消息头和消息体,也就是我们常说的自定义通信协议(都是基于TCP/IP层) 每个消息头和消息体都有固定的属性(也就是比如说:消息头有20个字节,前十个字节表示消息长度,后十个字节表示消息类型,这个消息长度和消息类型就是所说的属性) 每次客户端和服务端之间的通信消息都是按照这样的固定格式互相发送。既然他们的格式个长度都是固定的,那如果长度不够怎么办?就必须补全用服务器和客户端相互理解的占位符去补全。ByteBuffer这个字节缓冲区是继承与Buffer,在填充字节数组的时候非常的方便,下面是一个小的例子:
假如:有一个输入的密码,我不知道他的字节数,但是他必须满21个字节:
/*
* 将密码填充为21个字节*/
public byte[] password(){
String passWord ="11111111111111111111";
ByteBuffer passWord_byte = ByteBuffer.allocate(21);
byte[] buf_passWord = passWord.getBytes();
ByteBuffer t = ByteBuffer.allocate(1);
if(buf_passWord.length<21)
{
passWord_byte.put(buf_passWord);
for(int i=buf_passWord.length;i<21;i++){