我在这里读取二进制数据,但这给了我
“ java.lang.ClassCastException:java.lang.String无法转换为org.apache.mina.core.buffer.IoBuffer”
IoBuffer buffer =(IoBuffer)消息; //此行的异常
IoAcceptor acceptor = new NioSocketAcceptor();
acceptor.getFilterChain().addLast("logger", new LoggingFilter());
acceptor.getFilterChain().addLast(
"codec",
new ProtocolCodecFilter(new TextLineCodecFactory(Charset
.forName("ISO-8859-1"))));
@Override
public void messageReceived(IoSession session, Object message)
throws Exception {
IoBuffer buffer = (IoBuffer) message;
b = new byte[buffer.remaining()];
buffer.get(b);
}
最佳答案
由于此问题已将字符串值分配给IOBuffer IoBuffer buffer = (IoBuffer) message;
。您不能直接分配。
您必须使用putString
方法。我添加了一些样本。我不知道您在做什么,但这可能会对您有所帮助。
String message=(String)message;
IoBuffer buf = IoBuffer.allocate(message.length()).setAutoExpand(true);
buf.putString(message, ENCODER);