传输的字节数 | 传输的字节内容 |
---|
/**
* 前四个字节组成int型数据=需要读取的字节数
* 后面的字节是传输的自己
* @param buf
* @param recv_len
* @return
*/
public static String getRecvStr(ByteBuffer buf) {
String recvStr = null;
int recv_len = 0;
int position = buf.position();
//读取字符个数
if(position >= 4) {
buf.position(0);
recv_len = buf.getInt();
//读取字符
if(position >= recv_len + 4) {
byte[] recvBytes = new byte[recv_len];
buf.get(recvBytes, 0, recv_len);
try {
recvStr = new String(recvBytes,"utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
if(recvStr == null) {
//未读取成功
buf.position(position);
} else {
//读取成功
buf.compact();//复制未读字符到0处;
buf.position(position - recv_len - 4);
}
return recvStr;
}