加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 套接字和DataInputStream

发布时间:2020-12-15 04:55:25 所属栏目:Java 来源:网络整理
导读:我试图理解这段代码 DataInputStream stream = new DataInputStream( new ByteArrayInputStream(messageBuffer)); int messageLength = stream.readInt(); char recordType = (char) stream.readByte(); byte padding = stream.readByte(); short numberReco
我试图理解这段代码

DataInputStream stream = 
          new DataInputStream(
            new ByteArrayInputStream(messageBuffer));


        int     messageLength   = stream.readInt();
        char    recordType      = (char) stream.readByte();
        byte    padding         = stream.readByte();
        short   numberRecords   = stream.readShort();

messageBuffer初始化为新字节[32768],通过Socket.read()方法填充.
我不明白的是,一旦messageLength初始化为stream.readInt(),第二个第二个语句将如何工作,即recordType?

第一个语句不会从字节数组的开头读取一个int而下一个语句从字节数组的开头读取一个字节吗?究竟是如何知道从哪个点读取字节,整数,短路等?

解决方法

从 documentation:

A ByteArrayInputStream contains an internal buffer that contains bytes
that may be read from the stream. An internal counter keeps track of
the next byte to be supplied by the read method.

换句话说,DataInputStream只是从ByteArrayInputStream中读取,而后者则记住字节数组中的当前位置,并在每次读取一些数据时将其前进.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读