in reply to CLOSE-WAIT sockets

To oversimplify the TCP state diagram, CLOSE-WAIT means that the other end of the socket is closed and your application needs to close its end. I do not know what OS you are using, but your OS is supposed to "notify" you of this condition. The way that is generally done is for you to receive an EOF if you try to read from one of these sockets. If you do the read, receive the EOF and then close the socket, the socket shutdown (graceful close) will complete and your sockets will "disappear."

If the sockets in question do not return EOF, you will probably need to so something radical like setting the TCP keepalive parameters such that a connection to a non-responding peer is closed. I know Linux and BSD can do that, but IIRC it is on a system-wide basis. You may not want that.

HTH, --traveler