java socket 以及 流 关闭的问题


    首先我一下几个提出问题:稍后再做出解答。

    问题一:A如果仅仅将输入流关闭(inA.close()),对A与B之间的连接是否有影响?

                  A能否再次获得输入流(inA = socketA.getInputStream())?

                  是否A还可以发送数据,因为其输出流没有关闭?

     问题二:A如果仅仅将输出流关闭呢?

    问题三:A如果将输入输出流都关闭,socket还有效吗?

                  如果无效是否可以省略socket.close().

   回答:

经过测试,发现

1.        inA.close();

           socket.getOutputStream();

          这都出现异常。

2.        inA.close();

           inA = socket.getInputStream();

经过上述两条,可以得出结论:

       1.输入流或者输出流只要一者关闭,两个流以及socket都不可以用了。

       2.最好的做法是,要关闭则一起关闭:

       如:

          inA.close();

          outA.close();

          socket.close();

         最后需要注意的是:

                socket相关的流的读是阻塞的,也就是说。A不要输入流关闭前时,要考虑B端的输出流是否还    

         需   要写。否者,B端一直等待A端接收,而A端却接受不了,B一直阻塞。

                同样,A端将输出流关闭了,B端却一直在读,却读不到内容,一直阻塞。

                上述两种情况会跳出一大堆异常。

转载于:https://www.cnblogs.com/jerryshao2015/p/4419670.html

2026年软件测试职业院校技能大赛—ERP管理平台-采购入库模块Bug定位与查找 竞赛对接软件测试相关标准,以“ERP管理平台” 为被测系统,围绕软件测试领域的主流技术及工具,考查选手面 对实际问题的综合分析能力,对测试文档、测试用例的设计能力, 对单元测试、自动化测试、性能测试、接口测试等测试工具及方 法的掌握程度,检验选手团队协作能力、组织规划能力、方法运用能力等。 阅读详情

相关推荐

自动驾驶仿真(二)—— 基于PreScan与Simulink的联合仿真

自动驾驶仿真软件介绍二—— PreScan与Simulink联合仿真1. Prescan仿真软件2. Prescan与Simulink联合仿真2. 1 Prescan和matlab软件安装2. 2 联合仿真配置3. 联合仿真实例3.1 一辆不按法规行驶的小车3.2 另一辆的正常行驶的小车3.3 视觉辅助摄像机3.4 传感器检测4. 系列学习视频教程5. 参考学习的书目教材 上一篇博文简单介绍了Carsim与Simulink联合仿真,接着这篇就再继续简单介绍另一款自动驾驶仿真软件Prescan,并且简单做个P

zhudj08的博客 1万+

Socket中输入输出流关闭的正确操作

Socket Java的socket是一个全双工套接字,任何的输入流或输出流的close()都会造成Socket关闭。 解决办法:使用socket.shutdownOutput()方法关闭套接字的输出流,使服务器知道输出流关闭,可以得到流末尾标志(-1)。 同样,可以使用socket.shutdownInput()方法单独关闭套接字的输入流。 在客户端或者服务端通过socket.shutdownO...

qq_41927743的博客 3929

某知名系统漏洞挖掘与利用思路探索

本文以安全研究为目的,分享对该套系统的代码审计和漏洞挖掘过程,文中所提到的漏洞均已提交给CNVD&CITIVD,请勿用做非法用途。

C20220511的博客 1904

关于socket编程流的关闭

由Socket和SocketServer创建出来的输入输出流如果关闭的话,那么socket和SocketServer也会关闭 但是有showdownInput()和showdownOutput()方法来改变流的流向 注意,关闭之后,就不能再使用该流,只能使用另外一种流,也就是如果关闭了输入流,就只能使用输出流,反之亦然 可能有小伙伴会疑惑,如果想使用一个Socket和ServerSocket进行交替输入输出操作怎么办? socket编程是基于http的编程,一次请求就是一个socket,下一次请求就再创

weixin_45381997的博客 910

利用 Docker Distribution 搭建私有的 Docker Registry

1、拓扑

weixin_44983653的博客 1067

学习海康VisionMaster之表面缺陷滤波

本文介绍了VisionMaster中表面缺陷滤波技术的应用。该技术通过数学变换抑制背景干扰、增强缺陷特征,适用于电池铝壳、垫圈/螺丝等无纹理背景的表面缺陷检测(划痕、凹坑、异物等)。操作流程包括:图像导入、轮廓定位、位置修正、参数设置(重点讲解滤波核尺寸/数量/标准差等关键参数的调整策略)。文章通过案例演示了如何通过多方向滤波响应识别表面划伤,并指出需结合blob分析进一步优化检测结果。该技术对工业质检具有实用价值,参数设置需结合缺陷特征与背景特性灵活调整。

yuhouxiyang的专栏 2828

socket输入输出的关闭方式

今天做socket相关的输入输出.当使用完一个输入或者输出流以后,我想关闭它,但是直接调用 inputstream.close的时候,再次使用会发现抛出异常,告诉你socket closed 查了一下,发现直接关闭流,会导致socket也被关闭. 正确的调用方法是不直接关闭流,而是调用socket的closeinput/closeoutput方法来关闭,这样可以避免socket被关闭的问题

zz880329的专栏 4717

第10章《VTK自定义部件Widget》

是用于交互式操作 3D 场景的组件,例如移动对象、调整尺寸、创建标注等。VTK 提供了一些内置的 Widget,如。,用户可以点击鼠标,在 3D 场景中放置一个点。负责绘制一个点,并控制其颜色、大小等。,可用于 3D 标注、对象拾取等应用!等,但在某些应用中,我们需要。这样,我们就创建了一个。

yumeiguo的博客 523

android通过socket发送大文件到服务器并返回结果

android通过socket发送大文件到服务,并且在服务器接受完后返回一个结果给android。主要的是需要在android通过socket.getOutputStream()传送完文件后,需要关闭socket的OutputStream(socket.shutdownOutput();),而并不是执行getOutputStream()对象的close()方法,如果执行这个方法,那么socket就...

www.v5qq.com的技术博客 279

【C#学习记录】如何让界面控件实现自适应布局(Winform)

小伙伴们大家好,我是雷工!在软件界面设计中,客户常常要求设计的界面可以随意缩放,缩放过程中,界面中的按钮等控件也会随着窗体变大缩小自动调整显示位置和尺寸大小。在C#的Winform窗体中如何实现这个效果,下面我们一起学习下。

做有价值的事,积累有价值的笔记! 1万+

芒果YOLO11改进44:主干Backbone篇之MobileViT::结合最新 ICLR2022 顶会|轻量通用的MobileViT结构(一)Transformer,轻量级、通用且移动友好的视觉转换

MobileViT::结合最新 ICLR2022 顶会|轻量通用的MobileViT结构(一)Transformer,轻量级、通用且移动友好的视觉转换

包括YOLOv5、YOLOv7、YOLOv8等模型改进 370

socket流的关闭

在使用socket进行全双工通信时,原本以为输入流和输出流是分开关闭的,然而不管关闭哪个都会直接关闭socket;可以使用socket.shutdownInput()和socket.shutdownOutput() 客户端 使用InputStream 进入bebug模式,在执行到 inputStream.close()后进入SocketInputStream的close()方法,而这个方法是关闭socket流 执行reader.close()后,最后也是执行SocketInputStream的close(

Myueye的博客 2845

matlab 基于离散余弦变换DCT的最小二乘相位解缠

最小范数法是寻求在解包裹相位的局部微分与包裹相位微分相一致的条件下, 逼近于真实相位分布的解包裹相位分布。目标是使解包裹相位与包裹相位曲面的差最小

点云侠的博客 285

java socket如何关闭_java socket 以及 流 关闭的问题

首先我一下几个提出问题:稍后再做出解答。问题一:A如果仅仅将输入流关闭(inA.close()),对A与B之间的连接是否有影响?A能否再次获得输入流(inA = socketA.getInputStream())?是否A还可以发送数据,因为其输出流没有关闭?问题二:A如果仅仅将输出流关闭呢?问题三:A如果将输入输出流都关闭,socket还有效吗?如果无效是否可以省略socket.close().回...

weixin_36170708的博客 980

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Java socket中IO流的关闭问题

1、首先第一点  out 流和IO流和socket是绑定好了的,如果单方面关闭一个流的话,socke就会被关闭 2、socket.shutdownOutputStream 使用这个的话,Socket还是可用的(in可用) 3、Socket关闭 后 输出缓冲区里的数据会被丢弃 4、参考文章:http://blog.youkuaiyun.com/justoneroad/article/details/696

上下求索 3220

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

java Socket IO流关闭问题(java.net.SocketException: Socket is closed)

新手上路,学习socket碰到关闭问题,解决好久找到出错问题。 OutputStream os = socket.getOutputStream(); os.close(); InputStream is = socket.getInputStream(); is.close(); 这样关闭会把socket一块关闭。报如下错误: java.net.SocketException: Socket is closed at java.net.Socket.getInputStream(Socket.java

l_1_0_O的博客 2505

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

java socket 卡住_Java socket通讯实现过程及问题解决

这篇文章主要介绍了java socket通讯实现过程及问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下本来是打算验证java socket是不是单线程操作,也就是一次只能处理一个请求,处理完之后才能继续处理下一个请求。但是在其中又发现了许多问题,在编程的时候需要十分注意,今天就拿出来跟大家分享一下。首先先建立一个服务端代码,运行时也要先启动...

weixin_42465030的博客 1410

IO流、Socket中close()方法

当流关闭后,与其相关的流、资源也会关闭,不能使用; 当Socket关闭,那么它的流也不能使用了;Socket的流关闭,Socket也被关闭了; 1、IO流 InputStream、InputStreamReader、FileInputStream、FileReader、BufferedReader; OutputStream、OutputStreamWriter、FileOutputStream、FileWriter、PrintStream、PrintWriter; 错误实例: InputSt

全栈攻城狮JSON的博客 2531

socket close java_java.net.SocketException: Socket closed解决

如题,在socket编程中报错java.net.SocketException: Socket closed1、理解错误含义在数小时无能狂怒后于StackOverflow寻得箴言:This exception means that you closed the socket, and then continued to try to use it.你把socket关了,却还想继续用,就会报这个错2...

weixin_36438511的博客 3794

Java socket编程学习笔记

4、解决方法:需要关闭流的同时,不关闭socket,可使用Socket::shutdownOutput()方法和Socket::shutdownInput()方法实现。5、原因:分析代码,未对socket进行关闭,但是客户端在通信完成前提前关闭了out流,服务端提前关闭了in流,查询资料得知关闭流会导致socket关闭。但是在socket中,只有当对方将输出流关闭后才会以-1作为结束标志,故而陷入死循环,推断正确。3、原因:分析代码,服务端没有打印出客户端发送消息,猜测是以下代码陷入死循环。

程序猿一只 702

Socket通信异常关闭

因为ps是处理流,关闭ps就会直接关闭every——Socket的输出流,我之前错误的理解了这样并不会影响Socket的输入流。使用socket.shutdownOutput()方法关闭套接字的输出流,使服务器知道输出流关闭,可以得到流末尾标志(-1)。但是这样又会出现新的问题,关闭了输出流,那这个服务器就从以下断点直接跳出循环了,不会再等待读取数据了,客户端直接下线了。查阅资料发现Java的socket是一个全双工套接字,任何的输入流或输出流的close()都会造成Socket关闭。

m0_50824187的博客 445

java socket 输入输出流_记录 serverSocket socket 输入,输出流,关闭顺序,阻塞,PrintWriter的一些问题....

关于socket.getOutputStream() 的一些问题, OutputStream的flush是一个空方法,所以需要另一个实现了Flush的流来包装一下这里为什么使用PrintWriter,而不使用BufferedWriter原因是在接收方使用BufferedReader 的readLine,而BufferedWriter.write并不会自动换行,所以会导致读取阻塞,需要手动换行,代码...

weixin_36118049的博客 866

java socket不关闭_Java:如何无例外地停止服务器(关闭Socket)?

我做了一个服务器,可以加入许多客户.但是我有一个问题.我添加了启动/停止按钮,它应该启动/停止服务器.但是代码无法按我想要的方式工作:未关闭连接,代码转到IOException“这是问题”(在ServerLogic部分中).此外,客户端仍可以与服务器联系.服务器逻辑public class ServerLogic{private static ServerSocket m_sSocket;priv...

weixin_34420979的博客 639

从tcp层面研究java socket 的使用

本文主要通过wireshark抓包来分析java socket程序的一些细节, 解决以前的一些疑问: 1.当一方的socket先关闭后,另一方尚未关闭的socket 还能做什么? 2.当基于socket的流关闭后,socket 还能使用吗? 首先给出基本的server和client端代码(为了便于分析,在代码中有很多sleep代码)。 server端(192.168.104.188...

weixin_30488313的博客 74

网络编程 三 Socket通信下篇

文章目录一 构建Sccket对象二 获取输入/出流三 流操作典型问题3.1 流的关闭引发Socket关闭3.2 传输对象时获取流阻塞四 端口分配、连接、超时和状态五 获取网络信息5.1 端口信息5.2 地址信息六 半关闭七 其他特性设置7.1 TcpNoDelay7.2 缓冲区7.3 关闭延迟7.4 读超时7.5 紧急数据7.6 探活7.7 传输质量 一 构建Sccket对象   服务端的Socket对象可通过ServerSocket对象获取,这里不再赘述。客户端的Socket对象可直接通过Socket类的

o983950935的博客 365

java简单socket实现文件上传

  服务端   import java.io.DataInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class TestDataServer { priv...

qq_41294444的博客 1801
上一篇: 书写优雅的shell脚本(四) - kill命令的合理使用
下一篇: 词性标注
dgit3228
博客等级 码龄12年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值