日期:2014-05-20  浏览次数:20569 次

字节流无法读取到二进制数据的-1标志
发送端主要代码
Java code
DataOutputStream daOutStream=new DataOutputStream(socket.getOutputStream());
daOutStream.write(字节数据);
daOutStream.flush();


接受段主要代码
Java code
DataInputStream daInStream=new DataInputStream(socket.getInputStream());
ByteArrayOutputStream baOutputStream=new ByteArrayOutputStream(1024);
while(true){
      byte[] buffer=new byte[1024];
      int total=0;
      total=daInStream.read(buffer);
      while((total=daInStream.read(buffer))!=-1 ){
         baOutputStream.write(buffer, 0, total);
      }
}

当读取到流尾端时
total=daInStream.read(buffer)
total没有返回-1标示,而是直接阻塞住了

------解决方案--------------------
-1表示流彻底结束,再也没东西了,那么需要发送方:
daOutStream.close();

光flush()是不够的。