zoukankan      html  css  js  c++  java
  • 【MINA】字节序知识

    字节序,分为高位在前和低位在前,说白了就是先从低操作还是从高位操作

    java和网络的字节序是一致的,都是高位在前,这意味着java端序列化和反序列化时不用关心字节序的问题,

    那问题是,那讨论字节序有什么意义那,假设c++和java通信,这时候c++端就需要考虑字节序,需要在序列化和反序列化时翻一下

    这是mina IOBuffer提供的设置字节序的方法

    IoBuffer order(ByteOrder bo):
    这个方法设置是Big Endian 还是Little Endian,JAVA 中默认是Big Endian,C++和其他语言一般是Little Endian。

    这是mina处理粘包和断包时的一段代码

    buf.flip();
    IoBuffer newBuf = IoBuffer.allocate(
    buf.remaining() + in.remaining()).setAutoExpand(true);
    newBuf.order(buf.order());
    newBuf.put(buf);
    newBuf.put(in);
    newBuf.flip();
    buf = newBuf;

    // Update the session attribute.
    session.setAttribute(BUFFER, buf);

    注意这里

    我们new了一个IOBuffer,默认是不支持扩展的,也是不指定字节序的,所以我们都是明示的设定

    将newBuff的字节序设定为与session中的一 致,覆盖session中的值

    详细了解字节序可参考http://www.blogjava.net/tinysun/archive/2009/12/31/307952.html

  • 相关阅读:
    JMS API学习总结(一)
    java读取properties配置文件
    如何创建并运行java线程
    JS
    JS
    JS
    JS
    IE
    JS
    JS
  • 原文地址:https://www.cnblogs.com/dagangzi/p/4714905.html
Copyright © 2011-2022 走看看