Java NIO read()从不抛出异常或返回-1

时间:2018-08-03 15:37:36

标签: java nio

我已经建立了一个基本的客户端应用程序,该应用程序创建了一个用于连接并向我的NIO服务器发送一些字节的套接字。它打开,写入字节,关闭,程序终止。

但是,在服务器端,我的选择器正在对该键进行旋转操作,不断返回读取的0个字节,从而导致SocketChannel从不关闭。

给我的印象是,当关闭客户端套接字(在客户端)时,这将导致read()返回-1或引发异常(在服务器端)。

1 个答案:

答案 0 :(得分:0)

那是因为在SocketChannel.read(buf)之后我没有对ByteBuffer进行任何操作

即使关闭了远程套接字,只要缓冲区中仍然有数据,本地套接字仍然准备就绪