Channel.read返回-2

时间:2012-11-01 02:56:57

标签: java sockets stream nio

我正在使用Java NIO来执行套接字操作。在使用流时,read调用(在此处读取字节数组,或者在本例中为ByteBuffer)将返回从流中读取的字节数,如果是,则返回-1溪流被关闭了。所以你基本上可以做到

while(channel.read(buffer) != -1){
  //do stuff
}

然而,我注意到我正在杀死我的服务器。当我添加一些日志记录语句时,我注意到read()调用在流的末尾返回-2。根据文件:

  

返回:读取的字节数,可能为零,如果是通道,则返回-1   已达到流程结束

以前有人经历过这个吗?我改变了我的代码以循环一个值> 0,但我想确保我理解发生了什么。

0 个答案:

没有答案