客户端是手机,手机只能用DataInputStream和DataOutputStream,手机发送的信息到mina开发的服务器,但messageReceived方法中却得不到信息,确切说是没有进messageReceived方法,各位达人,我该怎么办???
代码如下:
MinaServers:
public class MinaServers {
private static final int PORT = 9123;
public static Vector<MinaUserSession> userList = new Vector<MinaUserSession>();public void run() {
startServices();
}public void startServices() {
NioSocketAcceptor acceptor = new NioSocketAcceptor();
acceptor.setHandler(new MinaServersHandler());
acceptor.setBacklog(1500);
acceptor.getSessionConfig().setTcpNoDelay(true);
acceptor.getSessionConfig().setReceiveBufferSize(10240);
acceptor.getSessionConfig().setSendBufferSize(10240);
acceptor.setDefaultLocalAddress(new InetSocketAddress(PORT));
try {
acceptor.bind(new InetSocketAddress(PORT));//绑定端口,启动服务器
}
catch (IOException e) {}
}
}
MinaServersHandler:
public class MinaServersHandler extends IoHandlerAdapter {
@Override
public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
cause.printStackTrace();
}@Override
public void messageReceived(IoSession session, Object message) throws Exception {
IoBuffer buf = (IoBuffer) message;
String str = IoBufferHandler.iobuffer2String(buf);
System.out.println(str);
buf = IoBufferHandler.string2iobuffer(str);
session.write(buf);
}@Override
public void messageSent(IoSession session, Object message) throws Exception {
super.messageSent(session, message);
}@Override
public void sessionClosed(IoSession session) throws Exception {
super.sessionClosed(session);
}@Override
public void sessionCreated(IoSession session) throws Exception {
super.sessionCreated(session);
}@Override
public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
super.sessionIdle(session, status);
}
@Override
public void sessionOpened(IoSession session) throws Exception {
super.sessionOpened(session);
}
}
IoBufferHandler:
public class IoBufferHandler {
public static String iobuffer2String(IoBuffer buf) throws Exception {
short len = buf.getShort();
byte[] readByte = new byte[len];
buf.get(readByte);
ByteArrayInputStream inputPacket = new ByteArrayInputStream(readByte);
DataInputStream dis = new DataInputStream(inputPacket);
String str = dis.readUTF();
dis.close();
inputPacket.close();
return str;
}public static IoBuffer string2iobuffer(String str) throws Exception {
ByteArrayOutputStream outputPacket = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(outputPacket);
dos.writeUTF(str);
dos.flush();
IoBuffer buf = IoBuffer.allocate(100);
buf.put(outputPacket.toByteArray());
buf.flip();
dos.close();
outputPacket.close();
return buf;
}