mina 框架 求个用定长截取消息头的方法解析报文的例子

发布于 2021-11-26 23:38:13 字数 170 浏览 531 评论 7

本人在开发 一个TCP的服务端  求一个java MINA 框架的例子  例子要求  协议编码要求用
定长消息头 去编写 本人第一次开发 这样的接口  希望 朋友们不吝赐教  最好有实际开放经验的 给段 demo 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

鹤舞 2021-11-28 11:25:50

自带的例子就有

噩梦成真你也成魔 2021-11-28 11:23:49

我已经把mina 拿下了

明媚如初 2021-11-28 10:38:24

数据包长度 2字节 :

@Override
    protected boolean doDecode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception {
        //not enough  data will be return false
        if (!(in.prefixedDataAvailable(2,maxObjectSize))){
            return false;
        }
        //now let's decode message to the  IoBuffer;
        // mark <= position <= limit <= capacity
        // if remaining data is not enough to decode (value:MServerConfig.lengthFieldLength=2);
//        if (in.remaining()< MServerConfig.lengthFieldLength){
//            return false;
//        }
        int packLength=in.getUnsignedShort();//get pack length ,increments the position by two
        //the dataLength is not enough to decode
        if (in.remaining()<packLength){
            return false;
        }
        byte[]packMessage=new byte[packLength];
        in.get(packMessage);
        //warp byte array to IoBuffer ,add to the messageQueue
        out.write(IoBuffer.wrap(packMessage));
        out.flush(session.getFilterChain().getNextFilter("protocolCodecFilter"),session);//Flushes all messages to the NextFilter---->executors logic
        return true;  //decode ok
    }

有用 就点赞!

狠疯拽 2021-11-28 09:53:02

没有

风透绣罗衣 2021-11-28 09:22:13

定长消息头不是会浪费好多空间

落墨 2021-11-28 03:12:42

你说的很步骤很经典

女中豪杰 2021-11-27 22:47:50

自己编写一个Mina的Decode类(可实现ProtocolDecoder)

1、从IoBuffer中获取本次对方发送的数据

2、拼接上次通信的粘包数据

3、依据协议分包格式,初步解出单个数据包

4、详细解析数据包,依据协议制定消息类型,解析消息体

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文