Java socket中关闭IO流后,发生啥事
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java socket中关闭IO流后,发生啥事相关的知识,希望对你有一定的参考价值。
为了方便讲解,我们把DataOutputstream dout = new DataOutputStream(new BufferedOutputStream(mySocket.getOutputStream()));中的dout做为Socket输出流的代言。同 样的,din是输入流的代言。可以造成dout被关闭的操作有:
1、调用dout.close();或din.close();因为使用这种流关闭,会造成socket被关闭,所以输入输出流都将不可再用。
2、调用socket.close();
3、调用socket.shutdownOutputStream();单方面关闭dout,此时din还可正常使用。
以下,我将对socket中关闭输出流进行3个测试:
输出流关闭测试一:socket关闭吗?
输出流关闭测试二:该流是否可以重新开启?
输出流关闭测试三:输出缓冲区里的数据是丢弃,还是发送?
测试结果如下:
测试一:dout.close();会造成socket被关闭,但socket.shutdownOutputStream()不会。
测试二:不可以,会抛出异常!
测试三:丢弃
转载 参考技术A 应该是链接断开
java中的io流都有哪些
参考技术A Java中的IO流指的是将不同的输入输出源通过流的形式进行输入或输出的操作,流是一种抽象的描述,在程序中指的是数据的一种转移方式。
IO流的分类:
(1)按照数据的流向:
输入流、输出流
(2)按照流数据的格式:
字符流、字节流
(3)按照流数据的包装过程:
节点流(低级流)、处理流(高级流)
最基本的几种进行简单介绍:
•InputStream/Reader: 所有的输入流的基类,前者是字节输入流,后者是字符输入流。
•OutputStream/Writer: 所有输出流的基类,前者是字节输出流,后者是字符输出流。
以上是关于Java socket中关闭IO流后,发生啥事的主要内容,如果未能解决你的问题,请参考以下文章