一旦达到流结束,连接是否应该被关闭?
问题描述:
我正在NIO写一些网络代码。一旦达到流结束,连接是否应该被关闭?
ByteBuffer buf = ByteBuffer.allocate(Hub.getBufferSize());
int read = channel.read(buf);
if (read == -1) {
client.disconnect();
return;
} else if (read == 0) {
return;
}
我知道这是一个读取返回-1,这意味着连接的流的末尾已达到。但这是否意味着与该客户的连接已经结束?此外,服务器是否应该在到达流末端时明确关闭通道,还是冗余?
谢谢。
答
我知道这是一个读取返回-1,这意味着连接的流已达到结束。但这是否意味着与该客户的连接已经结束?
这是一回事。这些不是两个不同的概念,其中一个意味着另一个。这是同一件事。
此外,如果一旦达到
是最终的流服务器明确的关闭通道。
如果你不关闭它,它是一个套接字泄漏和内存泄漏。
还是它是多余的?
当然不是。往上看。另外,如果你不关闭它,你将继续收到OP_READ
,并继续阅读-1
。只是在浪费时间。
这回答了这一切。谢谢。 – 2013-04-25 22:06:55