您的位置:首页 > 其它

在mina中解析报文为十六进制字符串

2017-10-26 13:38 323 查看
在mina的messageReceived中接收客户端的消息,并解析消息。

private static class MsgServerHandler extends IoHandlerAdapter{

@Override
public void messageReceived(IoSession session, Object message) throws Exception {
super.messageReceived(session, message);

// 将Object类型的message转换为十六进制的字符串报文
String hexText = parseMessage(message);
System.out.println("报文:" + hexText);
}
}


/**
* 将Object类型的message转换为十六进制的字符串报文
* @param message
* @return
*/
private String parseMessage(Object message) {
IoBuffer buf = (IoBuffer) message;
IoBuffer.allocate(1024);
//长度超过会自动翻倍增长
buf.setAutoExpand(true);
ByteBuffer bf = buf.buf();
byte[] tmpBuffer = new byte[bf.limit()];
bf.get(tmpBuffer);
String result = "";
for(int   i=0;   i <tmpBuffer.length;   i++)   {
//转换16进制
String getM = Integer.toHexString(tmpBuffer[i] & 0xFF)+"";
if(getM.length()<2){
getM="0"+getM;
}
result+=getM+" ";
}
return result;
}


打印结果:

报文:68 31 00 31 00 68 C9 90-05 28 00 00 02 77 00 00 04 00 03 16
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: