要一次读取多个字节时,经常用到InputStream.available()方法,这个方法可以在读写操作前先得知数据流里有多少个字节可以读取。需要注意的是,如果这个方法用在从本地文件读取数据时,一般不会遇到问题,但在进行网络操作时往往出错,因为你调用available()方法时,对方发送的数据可能还没有到达,你得到的count是0。

需要改成这样:

  int count = 0;

  while (count == 0) {

    count = in.available();

  }

  byte[] b = new byte[count];

  in.read(b);

posted on 2018-03-19 15:23  啊哈咧  阅读(987)  评论(0编辑  收藏  举报