Java Socket|IO流关闭|shutdownInput|shutdownOutput

这里直接给出结论,因为没有什么道理可讲,编码的时候不要写触犯这些规则的代码即可,

OutputStream os = socket.getOutputStream();
os.close();
InputStream is = socket.getInputStream();
is.close();

类似这种关闭流的操作会导致Socket关闭,所以后续如果有对Socket的操作,都会抛出

java.net.SocketException: Socket is closed

的异常。所以基本上你是没有理由去调用输入输出流的close()方法的,除了在最后清理的时候,另外我们知道在调用读取方法时,多数是阻塞的,所以你的程序必须要考虑到这一点,要防止对方长时间没有调用shutdownOutput()或其他结束输出的方法时,你的线程出现一直读取阻塞的情形,像是线程假死一样,当然,如果你清楚的知道你的程序在做什么,这也无妨。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值