非阻塞SocketChannel能否读取缓冲数据同时阻止客户端继续发送?
问题描述
我遇到一个场景需求:在仅负责读取数据的服务器中,当收到关闭请求时,需要做到两点:
- 阻止客户端继续发送更多数据
- 尽可能处理完缓冲区中已存在的数据
我试过用shutdownInput()和socket.close()方法,它们确实能阻止后续读取操作,但会直接丢弃缓冲区里的内容。
shutdownInput()本来是我的首选方案,但官方文档明确说明,调用这个方法之后再调用read()会返回-1。不过我在Apache NIFI的一段代码中看到,似乎调用shutdownInput()之后仍然可以读取数据。
内容的提问来源于stack exchange,提问作者lujop
相关产品推荐
相关产品推荐

