socket字节流终极问题,输入输出的关闭时机,这次真的是来求大神的

server client
inputStream 关闭 inputStream可读流中缓存的数据,不会抛出异常
outputStream 写了一发缓存进去,再写,抛出异常

outputstream 关闭 inputStream可读流中缓存的数据,不会抛出异常

outputStream 写了一发缓存进去,再写,抛出异常

shutdowninput outputStream 写了一发缓存进去,再写,抛出异常
然后当管道中有缓存数据的时候
不管是客户端还是服务器调用output或者input都异常

shutdownoutput 客户端output无影响,可以写
input也无影响且不会阻塞,因为已经关闭了对面的output,直接执行过去

以上是我总结的,一端对另一端的tcp通信,左边是关闭相应的流,右边是对应的情况

debug了几十次,不会错的,求大神解释为什么,
不是只要一端的流关闭,socket就关闭了吗,为什么inputStream还能读,而不会抛出异常
,具体应用的时候怎么来关闭这些流保证不会出错

3个回答

图片说明

图,看得清楚一些

图片说明

换一张

大神别看我第一段的密密麻麻的字了就看我上面的图吧,求解释产生这种现象的原因,本人对socket底层的实现完全不了解

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!