JAVA中关闭OutputStream
来源:互联网 发布:微信企业宣传软件 编辑:程序博客网 时间:2024/06/03 18:01
只要关闭Socket的InputStream或OutputStream其中任何一个,就关闭了Socket,这是不好的关闭方法。正确的方法应该是ShutdownInput/ShutdownOutput。
比如使用ZIP压缩发送和接收数据的例子:
发送方:在Socket的OutputStream上封装GZIPOutputStream或DeflaterOutputStream
1、发送数据
2、发送数据结束标志(此时需要关闭GZIPOutputStream或DeflaterOutputStream,否则不保证全部数据都被发送至对方)
3、接收应答
4、结束
接收方:在Socket的InputStream上封装GZIPInputStream或InflaterInputStream
1、接收数据
2、收到数据结束标志
3、发送数据处理结果
4、结束。
按道理,发送方在发送完结束标志后应该可以关闭Output了,如果简单的调用了OutputStream.close,JDK的实现就会把InputStream和Socket同时关闭,这显然是不行的。为了正确的实现应用逻辑,就需要做一些额外的、本来不必要的处理。比如需要覆盖SocketOutputStream的close,让它调用Socket.ShutdownOutput,而不调用它的close.
- JAVA中关闭OutputStream
- JAVA中InputStream和OutputStream如何区分
- Java中InputStream类和OutputStream类
- Java中InputStream和OutputStream的区别
- Java中Inputstream和OutputStream比较
- java 中inputstream 和outputstream的理解
- JDK中java.io.OutputStream源码
- java中FileInputStream和OutputStream解析
- Java中字节输出流 OutputStream
- java OutputStream
- java中如何将OutputStream转换为InputStream
- java中Inputstream,outputstream(字节输入输出流)
- Java随笔(2)I/O流中InputStream/OutputStream
- java中Inputstream和outputstream有什么区别
- (转载)java中outputStream与inputStream的相互转换
- java.io.OutputStream翻译
- java inputStream ,outputStream
- Java.IO.InputStream-OutputStream
- JAVA线程引起的CPU满负载
- JAVA线程生命周期
- JAVA中修饰符类型的区别
- Linux学习笔记(二)-系统管理篇之…
- Linux学习笔记(三)—系统管理篇之…
- JAVA中关闭OutputStream
- Springframework(一)spring基础概念介绍
- 先装linux后装windows的双系…
- NTFS和FAT文件系统的区别
- Linux学习笔记(四)-系统管理篇之…
- win7重装系统后Windows upstate出现问题
- Linux学习笔记(五)-系统管理篇之…
- Linux学习笔记(六)-系统管理篇之…
- Linux学习笔记(七)-网络篇和多媒…