通常,使用关闭输出流来表示输出已经结束。但在进行网络通信时则不能这样做。因为我们关闭输出流时,该输出流对应的Socket也将随之关闭,这样程序将无法再从该socket中读取数据。

为了应付这种情况,socket提供了两个半关闭的方法用来只关闭socket的输入流或者输出流,用以表示输出数据已经发送完成。方法详情:

shutdownInput():关闭该socket的输入流,程序还可以通过该socket的输出流输出数据;

shutdownOutput():关闭该socket的输出流,程序还可以通过该socket的输入流读取数据。

当调用shutdownInput()或shutdownOutput()方法关闭输入流或输出流后,该socket处于半关闭状态。此时可以使用isInputShutdown()或isOutputShutdown()来判断该socket是否处于半读状态或半写状态。

需要注意的是,即使同一个socket先后调用shutdownInput()和shutdownInput()方法,该socket实例仍然没有被关闭,只是该socket既不能输出数据也不能读取数据而已。

当调用shutdownInput()或shutdownOutput()方法关闭了输入流或输出流之后,该socket无法再次打开输出流或输入流,因此这种做法不适合需要保持持久通信状态的交互式应用。

java socket 一边关闭_java socket - 半关闭相关推荐

  1. java socket 线程池_java socket编程的一个例子(线程池)

    服务器程序EchoServer.java: import java.io.*; import java.net.*; import java.util.concurrent.*; public cla ...

  2. java socket远空_JAVA Socket超时浅析

    套接字或插座(socket)是一种软件形式的抽象,用于表达两台机器间一个连接的"终端".针对一个特定的连接,每台机器上都有一个"套接字",可以想象它们之间有一条 ...

  3. java socket 循环读取_java socket tcp(服务器循环检测)

    刚才看了下以前写了的代码,tcp通信,发现太简单了,直接又摘抄了一个,运行 博客:http://blog.csdn.net/zhy_cheng/article/details/7819659 优点是服 ...

  4. java服务端代码_Java Socket编程服务器响应客户端实例代码

    通过输入流来读取客户端信息,相应的时候通过输出流来实现. 服务端类的代码: import java.io.BufferedReader; import java.io.IOException; imp ...

  5. java swing 关闭_Java Swing 只关闭当前窗体的实现

    看到很多人都在询问怎么在java swing中只关闭当前的窗体,因此写下此文. 主界面主要是有两个jbutton,一个是通过按钮事件调起另一个jfame,另一个是关闭当前窗体. 1.关闭当前窗体不能使 ...

  6. java io流不关闭_Java IO流关闭问题的深入研究

    前几天看了一篇文章(见参考文章),自己动手试了下,发现有些不一样结论,作博客记录下,本文主要研究两个问题: 包装流的close方法是否会自动关闭被包装的流? 关闭流方法是否有顺序? 包装流的close ...

  7. java socket编程心跳_Java Socket编程心跳包创建实例解析

    1.什么是心跳包? 心跳包就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包. 用来判断对方(设备,进程或其它网元)是否正常运行,采用 ...

  8. java socket负载均衡_Java Socket分发服务负载均衡

    1 1. 设备请求分发服务器,分发服务器返回有效的socket服务器ip与port,然后断开连接.2 a) 设备与服务器建立连接.3 b) 服务器接收到连接请求后,立即将分配好的socket服务器ip ...

  9. java socket 对方关闭_java Socket判断对方是否已关闭连接

    如何判断远端socket是否已经断开连接,如果断开那么需要重新连接. 1通过socket类的方法isClosed().isConnected().isInputStreamShutdown().isO ...

最新文章

  1. 标签的属性和样式属性有什么区别
  2. java调用方法返回数组_JAVA使用下面的方法头编写方法,返回两个数组列表的并集...
  3. Spring Cloud Gateway 整合阿里 Sentinel网关限流实战
  4. div 超出高度滚动条,超出宽度点点点
  5. matlab 码元扩展,扩频通信及matlab仿真
  6. redis缓存失效及解决方案
  7. c语言程序与实验系统,C/C ++程序设计学习与实验软件系统v2019 最新版下载_云间下载...
  8. 销售服务器 以次充好 判刑,销售假冒产品怎么判刑处罚,法律怎么规定的?
  9. opatch java.lang.OutOfMemoryError:Java heap space错误一例
  10. JNI返回复杂对象之中的一个
  11. VC虚拟键值表(详细介绍)
  12. 十六进制换算成二进制、八进制、十进制
  13. 华为鸿蒙系统支持什么手机_华为鸿蒙系统支持的手机型号_华为鸿蒙系统最新消息...
  14. 会议审批 查询会议签字
  15. 利用Python脚本计算基因组测序数据Nx0
  16. POI使用模板制作PPT,替换内容时原样式丢失问题的解决办法
  17. 这是转载的孔雀东南飞的文章
  18. android最新直播框架,NDK--Android Studio中直播推流框架的搭建
  19. 网络安全学习:系统基础命令操作
  20. Android中Notification的使用(一)

热门文章

  1. 开源!《模式识别与机器学习(PRML)》笔记、代码、NoteBooks 发布
  2. 信号分解:双正交、完备性、对偶向量
  3. 大话数据结构:线性表(1)
  4. 在网页上启动你的应用程序
  5. ADO.NET连接字符串
  6. c语言函数用指针传递参数问题
  7. Mybatis学习总结二
  8. 无线局域网技术白皮书
  9. 完全理解NIO Selector
  10. 百斗度输入法linux,斗字输入法安卓版-斗字输入法app下载-最火软件站