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