簡體   English   中英

如何使用Apache MINA Server讀取以字節為單位的二進制數據?

[英]How to read binary data in Bytes Using Apache MINA Server?

在這里,我正在讀取二進制數據,但這給了我“ 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);

我有這樣的完成:

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 {
    byte[] b = new byte[100];
    b =  message.toString().getBytes(Charset.forName("ISO-8859-1"));// Read Binary Message
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM