Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Does closing the socket close the stream?

  1. I am working in a legacy java application, In many files, socket and streams are used, where sockets are getting closed but not the streams, is this necessary to close all the streams before closing the socket. because I am getting "too many open files error", is this error because of not closing the streams.....

  2. closing the socket will automatically close the streams also?

like image 381
Karthik Avatar asked Dec 08 '22 14:12

Karthik


2 Answers

From the Socket Javadoc:

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

So generally speaking, closing the socket should be enough to close both streams it created.

Your "too many open files error" is most likely caused by something else.

like image 133
mthmulders Avatar answered Dec 11 '22 03:12

mthmulders


Closing any one of those closes the other two, but you should close the outermost output stream (or Writer) that you have wrapped around the socket. That closes the input stream and the socket. If you don't close the outermost output stream yourself, it won't get flushed, and so you can lose data if there is a buffered outpput stream or writer in the stack. You could also close the socket itself in a finally block to be sure: in fact lack of finally blocks may well be the cause of your problem.

like image 27
user207421 Avatar answered Dec 11 '22 02:12

user207421