Socket.getOutputStream与Socket.getInputStream

OutputStream Socket.getOutputStream()与InputStream Socket.getInputStream()

分别返回SocketOutputStream对象和SocketInputStream对象。

OutputStream中有三个write方法:

void write(byte[] b)
          将 b.length 个字节从指定的 byte 数组写入此输出流。
 void write(byte[] b, int off, int len)
          将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。
abstract  void write(int b)
          将指定的字节写入此输出流。

 

而InputStream中有三个read方法:

abstract  int read()
          从输入流中读取数据的下一个字节。
 int read(byte[] b)
          从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
 int read(byte[] b, int off, int len)
          将输入流中最多 len 个数据字节读入 byte 数组。

 

对其中的read(byte[] b)和read(byte[] b, int off, int len)的调用要引起注意:这两个方法并不保证能够将流中的所有字节读入到数组中,今天实验室有同学遇到此类问题,发现最多只能够从流中读取:65536个字节,当使用缓冲区的时候这个数字好像会发生变化。

 

从一个流中读取全部的数据最可靠的方法还是用一个循环一次读取一个字节直到流的末尾。

 

你可能感兴趣的:(Socket.getOutputStream与Socket.getInputStream)