在Server端可以用 is.read(length) 方法得到一个byte[]形式从Client发送过来的信息,Client端发送过来的是个协议信息,包括报文长度len(类型 short 长度 2),命令字cmdType(类型 byte 长度 1)。请问怎样从客户端过来的byte[]中解析出这些信息。或者有没有其他更好的办法。谢谢!

解决方案 »

  1.   

     看了老半天,没看懂。。你的意思是服务器读到客户端的数据是byte[]型的,怎么样解析出来吗?如果是这样的话,直接用String按编码转一下就行了吧。。如果是传字符串的话。你可以用BufferedReader来读,它可以直接读出字符串
      

  2.   


    是的这个意思,但是这个byte[]包含 short,int等类型的数据,怎样用String按编码转?
    这个byte[]中 比如第一个需要拿到 报文长度len(short类型 2长度)
    老兄按你的意思怎么才能达到 这个short型的 len
    谢谢!感激不尽
      

  3.   

    可以用NIO包的ByteBuffer类
    ByteBuffer buf = ByteBuffer.wrap(array);
    用上面建立buffer,
    然后就根椐报文格式依次读出想要用数据就可以了,读了一次后,ByteBuffer会记录下位置,再叫下一个方法后,会继续读。同时,记录的位置也是可以改变的:buf.getChar();
    buf.getDouble();
    buf.getFloat();
    buf.getInt();
    buf.getLong();
    等等据体的查一下API就OK了
      

  4.   


    short18位2个字节,不要考虑这些问题么, 比如我的实际需求第一个读取的是报文长度len (short类型长度2) 直接 写 short len = buf.getShort()就可以了么,另外如果需要从中读取一个未知大小的byte[](短信长度)数组该如何操作?谢谢