请选择 进入手机版 | 继续访问电脑版

默认
发表评论 13
mina2 运行一段时间报BufferUnderflowException 异常
1金币
我看后台时不时有这样的异常是哪里出的问题?是编解码不对?还是哪参数设置的不对
org.apache.mina.filter.codec.ProtocolDecoderException: java.nio.BufferUnderflowException (Hexdump: 11 53 8F 00 00 00 30 00 FF FF FE FF 78 9C 01 84 00 7B FF 74 36 09 0E AD C4 49 A7 67 70 AC 15 6F 70 85 EA F2 54 BA A2 43 7E 37 64 99 DB B7 7F BF 92 6F BC 3A EB 2A 78 50 F0 41 96 6D 11 CF 8C 8A 7D 8C 89 B3 41 19 58 A2 E0 2A 56 A9 A9 0E CF DB BC 26 CD DE 9A 84 8B FD B9 FF 26 E6 88 2F 18 E0 06 CF A9 0F D6 4A 2A 1B 09 D5 A5 07 E1 3C 5F AE 7D F2 DA 32 88 E8 7A CF C4 4F E2 55 C9 74 43 1D 00 85 2D F2 FB 7B EA 68 08 87 95 9C 67 A5 01 F5 38 59 2F 32 7D 5D 7D 55 29 42 4F)

上一篇:请教用NIO框架MINA开发IM时的心跳和会话超时问题下一篇:求助关于Mina框架文件传输时服务端解析数据出错的问题
评论 13
你这是自已用MINA2写IM?解码器用的是什么?
签名: 该会员没有填写今日想说内容.
用是decoder是自已写的???
楼主把代码帖出来大家看看
签名: 该会员没有填写今日想说内容.
传输的数据格式是什么?自已弄的byte数组?
签名: 天气这么好,谁能带我出去看看。。。
5 楼: sxb Lv.2 楼主 2 个月前 | 显示全部楼层
引用:JackJiang 发表于 2016-12-30 19:31
你这是自已用MINA2写IM?解码器用的是什么?

我实现MessageDecoder 这个接口,方法里面decodable大概这样写的。
//20 前导
if(in.remaining()<20){
            return MessageDecoderResult.NEED_DATA;
        }
size 前导中数据的长度
    if (size>in.remaining()) {
        return MessageDecoderResult.NEED_DATA;
    }else if (size<0) {
        return MessageDecoderResult.NEED_DATA;
    }else {
        return MessageDecoderResult.OK;

    }
引用:sxb 发表于 2017-01-03 21:09
我实现MessageDecoder 这个接口,方法里面decodable大概这样写的。
//20 前导
if(in.remaining()in.re ...

你可以去看看MobileIMSDK的数据接收部分,我没有使用它的Decoder机制,直接对2进制数据进行自已的解析和处理,这样就不会出现什么乱七八糟的不可控未知问题了。
签名: 该会员没有填写今日想说内容.
引用:sxb 发表于 2017-01-03 21:09
我实现MessageDecoder 这个接口,方法里面decodable大概这样写的。
//20 前导
if(in.remaining()in.re ...

你可以去看看MobileIMSDK的数据接收部分,我没有使用它的Decoder机制,直接对2进制数据进行自已的解析和处理,这样就不会出现什么乱七八糟的不可控未知问题了。
签名: 该会员没有填写今日想说内容.
8 楼: sxb Lv.2 楼主 2 个月前 | 显示全部楼层
引用:JackJiang 发表于 2017-01-03 22:07
你可以去看看MobileIMSDK的数据接收部分,我没有使用它的Decoder机制,直接对2进制数据进行自已的解析和 ...

public void messageReceived(IoSession session, Object message) throws Exception
        {
                if ((message instanceof IoBuffer))
                {
                        IoBuffer buffer = (IoBuffer)message;
                        Protocal pFromClient = fromIOBuffer(buffer);


我看你直接在接收方法里面写的,,如果粘包、缺包 你是怎么处理的?
引用:sxb 发表于 2017-01-04 08:43
public void messageReceived(IoSession session, Object message) throws Exception
        {
                if ((messag ...

你说的是TCP吧,粘包问题去网上找代码处理一下,因为粘包和缺包是所有TCP通信程序都要面对的问题,所以很容易找到代码。
签名: 该会员没有填写今日想说内容.
10 楼: sxb Lv.2 楼主 2 个月前 | 显示全部楼层
引用:JackJiang 发表于 2017-01-04 10:34
你说的是TCP吧,粘包问题去网上找代码处理一下,因为粘包和缺包是所有TCP通信程序都要面对的问题,所以很 ...

MobileIMSDK 不用处理吗
引用:sxb 发表于 2017-01-04 10:41
MobileIMSDK 不用处理吗

MobileIMSDK用的是UDP协议,所以没有粘包和缺包的问题。
签名: 该会员没有填写今日想说内容.
讲得不错,赞
签名: 111
一直默默关注着
签名: 111
别的不错
签名: 111

Processed in 0.203132 second(s), 28 queries , Gzip On.

返回顶部