0
Я пытаюсь использовать Apache Mina для связи с TCP/IP. В моем случае, я должен отправить длинный текст сообщения, как:Apache Mina TCPServer не может читать длинный текст строки
0400F23A40010881800200000040000000001623334444555566665000990000005670000725090909999999090909072507306011040001ab9999999999ab9999999999999028000008389999999900000056700036003110000002001000010725090909000000000000000000
Но когда я пытаюсь отправить мой TCP сервер не может показать сообщение в консоли. Вот мой код сервера:
public class TCPServer {
private static final int PORT = 3092;
public static void main(String[] args) throws IOException {
IoAcceptor acceptor = new NioSocketAcceptor();
acceptor.getFilterChain().addLast("logger", new LoggingFilter());
// acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));
//
// Set handler
acceptor.setHandler(new TimeServerHandler());
// Set config
acceptor.getSessionConfig().setMaxReadBufferSize(1048576);
acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
// Bind port
acceptor.bind(new InetSocketAddress(PORT));
}
}
И это мой обработчик
public class TimeServerHandler extends IoHandlerAdapter {
private static final CharsetEncoder ENCODER = Charset.forName("UTF-8").newEncoder();
public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
cause.printStackTrace();
}
public void messageReceived(IoSession session, Object message) throws Exception {
String msg = message.toString();
if (message instanceof IoBuffer) {
IoBuffer ioBuffer = IoBuffer.allocate(msg.length(), false).setAutoExpand(true);
System.out.println(ioBuffer.capacity());
}
if (msg.trim().equalsIgnoreCase("quit")) {
session.close(true);
return;
}
}
public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
}
}
Я просто распечатать емкость, но сервер не может прочитать сообщение.
Как это исправить? Спасибо