java - 如何使用 Apache MINA 服务器读取以字节为单位的二进制数据?

标签 java client-server serversocket apache-mina mina

这里我正在读取二进制数据,但这给了我 “java.lang.ClassCastException:java.lang.String无法转换为org.apache.mina.core.buffer.IoBuffer”

IoBuffer buffer = (IoBuffer) message;//此行异常

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);

关于java - 如何使用 Apache MINA 服务器读取以字节为单位的二进制数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34522929/

相关文章:

Java <> 运算符说明

java - spring-boot - 关闭控制台日志记录

javascript - PouchDB 和 ANGULARJS - 最佳设计方式

sockets - 如何让我的异步客户端调用套接字服务器并等待响应

java - 使用套接字立即从服务器向客户端发送数据时出现问题吗?

java - future 超时和IO超时

Java:检查一个数组中的重复值并将更简单的 ID 分配给另一个相同大小的数组

python - 下载文件后无法写入客户端

java - 网络编程中Java函数与C函数的等价

c# - 如果 C# 客户端未关闭,Python 服务器无法重新启动