如果读到returns -1 是socket自动关闭了吗?
If read returns -1 is the socket automatically closed?
out.close ();
in.read ( ByteBuffer.allocate ( 1 ) );
in.close ();
在上面的代码片段中,out
是一个 WritableByteChannel
,in
是一个 ReadableByteChannel
。一旦其中一个对等方发送了 EOT 信号,就会在处理结束时找到此代码。 close()
在 out
上调用,然后读取 in
以从远程对等方的套接字获取 EOF。当read()
returns -1时,表示对端关闭了socket。下一行的close()
是不是多余的,因为本地套接字已经自动关闭了?
从对等端接收流结束和关闭通道是两件不同的事情。 end-of-stream 只是意味着不再接收数据,但通道在本地端仍然打开。您仍然应该调用 close()
来释放任何正在使用的本地资源。
When read() returns -1, it indicates that the peer has closed the socket.
他的插座。不是你的。 连接 目前处于入站方向的半关闭状态。由您来关闭您的终端,即您的套接字。
out.close ();
in.read ( ByteBuffer.allocate ( 1 ) );
in.close ();
在上面的代码片段中,out
是一个 WritableByteChannel
,in
是一个 ReadableByteChannel
。一旦其中一个对等方发送了 EOT 信号,就会在处理结束时找到此代码。 close()
在 out
上调用,然后读取 in
以从远程对等方的套接字获取 EOF。当read()
returns -1时,表示对端关闭了socket。下一行的close()
是不是多余的,因为本地套接字已经自动关闭了?
从对等端接收流结束和关闭通道是两件不同的事情。 end-of-stream 只是意味着不再接收数据,但通道在本地端仍然打开。您仍然应该调用 close()
来释放任何正在使用的本地资源。
When read() returns -1, it indicates that the peer has closed the socket.
他的插座。不是你的。 连接 目前处于入站方向的半关闭状态。由您来关闭您的终端,即您的套接字。