有人能解释一下Java sockets中以下行为吗:
大概的想法是这样的:
- 打开socket,获取I/O流。
- 写请求,关闭输出流
- 读取响应,关闭输入流
- 关闭socket。
这是我的问题/问题所在:
如果我使用PrintWriter
进行输出,然后关闭它,它会关闭整个socket,随后的读操作失败得很惨。
相反,如果我直接使用socket的shutdownOutput()
方法,它将正确关闭输出流通道,同时保持socket处于活动状态。
为什么关闭PrintWriter
对象会导致整个socket关闭?
close()
调用了flush()
。 - user207421