博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java.net.SocketException: socket closed
阅读量:7145 次
发布时间:2019-06-29

本文共 836 字,大约阅读时间需要 2 分钟。

hot3.png

在使用socket编程的时候,发现当使用完getInputStream方法后,再获取OutputStream就会报

java.net.SocketException: socket closed错误

看到JAVA api中写到

java.net.Socket.getInputStream方法:

 

getInputStream

 

public InputStream getInputStream()throws IOException

 

返回此套接字的输入流。

如果此套接字具有关联的通道,则所得的输入流会将其所有操作委托给通道。如果通道为非阻塞模式,则输入流的 read 操作将抛出IllegalBlockingModeException。

在非正常条件下,底层连接可能被远程主机或网络软件中断(例如,TCP 连接情况下的连接重置)。当网络软件检测到中断的连接时,将对返回的输入流应用以下操作:

网络软件可能丢弃经过套接字缓冲的字节。网络软件没有丢弃的字节可以使用 read 读取。

如果没有任何字节在套接字上缓冲,或者 read 已经消耗了所有缓冲的字节,则对 read 的所有后续调用都将抛出 IOException。

如果没有任何字节在套接字上缓冲,并且没有使用 close 关闭套接字,则 available 将返回 0。

关闭返回的 InputStream 将关闭关联套接字。

返回:

从此套接字读取字节的输入流。

抛出:

IOException - 如果在创建输入流时发生 I/O 错误、没有关闭套接字、没有连接套接字或者使用 shutdownInput() 关闭了套接字输入

 

 

但是!!!!!

我发现Inputstream没有被关闭。

最后发现是Inputstream的包装对象进行了关闭,所以结论是,在你还要进行数据传输时,不要尝试任何流的关闭。

 

更多文章:

转载于:https://my.oschina.net/jiangmitiao/blog/492061

你可能感兴趣的文章
客户端请求新页面
查看>>
VMware安装CentOS时,无法以图形界面安装解决办法
查看>>
SpringMvc文件资源防止被外链链接
查看>>
Spring 4 官方文档学习(十一)Web MVC 框架
查看>>
使用 Spring Boot 快速构建 Spring 框架应用--转
查看>>
Quartz 2D
查看>>
Eclipse 快捷键
查看>>
VC++ 设置软件开机自启动的方法
查看>>
MyBatis学习(三)、动态SQL语句
查看>>
PLSQL:[1]plsql中文乱码,显示问号
查看>>
将十进制转成十六进制
查看>>
【题目】英文字符进行频率的统计,直方图输出
查看>>
Ztree手风琴效果(第三版)
查看>>
「坐上时光机,查找编译压缩后的文件最初的样子」gulp-sourcemaps 使用说明
查看>>
java 泛型中 T、E ... 和 问号(通配符)的区别
查看>>
MyEclipse使用总结——MyEclipse去除网上复制下来的来代码带有的行号
查看>>
java service wrapper日志参数设置及优化
查看>>
android build.prop详解
查看>>
Spring aop 切面编程
查看>>
C3P0连接池使用教程
查看>>