Alex Rivera | Logout

What is the difference between closing Input/OutputStream and closing Socket directly?

Asked 2010-08-06T22:03:19.840
21

I just wondering what java does when we call close on the inputStream and outStream associated with a socket. What is the difference from the close call on the socket, i.e Socket.close().

if we just close the io stream on the socket, but not close the socket, can we reopen the io stream on the socket again?

Thanks in advance!

Edit
Report

1 Answer

17

From the java api documentation for Socket:

public void close() throws IOException Closes this socket. Any thread currently blocked in an I/O operation upon this socket will throw a SocketException.

Once a socket has been closed, it is not available for further networking use (i.e. can't be reconnected or rebound). A new socket needs to be created.

Closing this socket will also close the socket's InputStream and OutputStream.

If this socket has an associated channel then the channel is closed as well.

Closing the InputStream of the Socket will lead to the closing of the Socket. The same goes for closing the OutputStream of the Socket.

From the java api documentation for Socket#getInputStream()

Closing the returned InputStream will close the associated socket.

Check the API documentation, it is there for a reason.

answered 2010-08-06T22:58:27.317

Your Answer