近日学习 apache mina2 发觉很难对字节数组的数据进行正确解析。
客户端代码:
String msg="testaaaa";
byte[] message= msg.getBytes();
/**
 * 发送报文
 * @param serviceAddress
 * @param message
 * @throws Exception
 */
public static void sendMessage(String serviceAddress,byte[] message) throws Exception{
String[] address = serviceAddress.split(":");
int port =0;
try {
port = Integer.valueOf(address[1]);
} catch (NumberFormatException e) {
e.printStackTrace();
throw new Exception("服务器地址错误!");
}
if(cf==null){
getconnect(address[0],port);
} cf.awaitUninterruptibly();// 等待连接创建完成  
cf.getSession().write(message);// 发送消息
cf.getSession().getCloseFuture().awaitUninterruptibly();// 等待连接断开
}
服务端:
public void messageReceived(IoSession session, Object message)
throws Exception {
        //将message对象转换为字符数组   
        ByteArrayOutputStream bos = new ByteArrayOutputStream();   
        ObjectOutputStream oos = new ObjectOutputStream(bos);   
        oos.writeObject(message);   
        byte[] str = bos.toByteArray();   
        oos.flush();   
        oos.close();   
        bos.close();    String msg=new String(str);


//我们已设定了服务器解析的规则是一行一行读取,这里就可以转为String:
//String str = (String)message;

//Write the received data back to remote perr
System.out.println("收到客户端发来的消息为" + "  " + msg);

//将测试消息会送给客户端
//session.write(str + count);
}结果:收到客户端发来的消息为  ��