专栏首页张恒的网络日志java.net.SocketException: socket closed

java.net.SocketException: socket closed

在使用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的包装对象进行了关闭,所以结论是,在你还要进行数据传输时,不要尝试任何流的关闭。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • java默认的hashcode方法到底得到的是什么?

    hashcode方法会影响jvm性能?听上去天方夜谭,实际上蕴藏着一些微小的原理,接下来让我们走进hashcode方法,一探native方法源头。

    zhangheng
  • PHP 入门

    zhangheng
  • 使用StartSSL为你的服务器加密

    目前越来越流行https的网站了,作为个人如何给自己的web服务器升级呢?不要错过免费的StartSSL。

    zhangheng
  • python编程之网络基础

    1 套接字是一种具有通讯端点概念的计算机网络数据结构,网络化的应用程序在开始任何通讯之前都必须要建立套接字。

    py3study
  • selec/poll中的读写事件和epoll中的读写事件

    在Linux网络编程中,常常使用select和poll来做事件触发,监听socket的读写状态,然后进行读写操作。现在新的linux内核中,增加了epoll事件...

    李海彬
  • unix网络编程——TCP套接字编程

      TCP客户端和服务端所需的基本套接字。服务器先启动,之后的某个时刻客户端启动并试图连接到服务器。之后客户端向服务器发送请求,服务器处理请求,并给客户端一个响...

    Mister24
  • Linux C Socket Api详解

    以前都只是在网上搜的能用的例子,对一些参数不是很清楚,这次汇总。而且网络通信还是很常用的通信手段。

    用户5908113
  • 科学瞎想系列之三十七 船舶动力系统(3)

    上一篇说了船舶混合动力系统,这篇就说说船舶综合电力系统。所谓船舶综合电力系统就是指全船所有动力能源均采用电力,包括推进动力、辅机动力、军船上某些高能武器...

    标准答案
  • 用SSH将windows中的文件上传至Ubuntu Kylin

    参考的URL:http://jingyan.baidu.com/article/066074d6600d43c3c21cb0d2.html

    克虏伯
  • 搭建 FTP 文件服务

    安装并启动 FTP 服务 任务时间:5min ~ 10min 安装 VSFTPD 使用 apt-get 安装 vsftpd: sudo apt-get in...

    _gongluck

扫码关注云+社区

领取腾讯云代金券