It is a peer-to-peer client. One of the most popular for the torrent network. Name Azureus. You can get it from here
http://azureus.sourceforge.net/
But it's Java based, so it uses the Java Virtual Machine for network operation. As a Java developer myself, I can tell you that there is not much you can do to tweak the default implementation of TCP sockets in Java. So most probably, this issue exists for all Java based applications. Or at least for that version of JVM. I use the latest one from sun "Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_03-b02)"
http://www.java.com/en/download/manual.jsp
Another important thing. I use Azureus with the option "Slowly connect new peer connections" switched on. Without it, the Wingate Internet Client will eventually crash Azureus. You can try to reproduce that as well.
Finally, an excerpt of what I found on the topic of CLOSE_WAIT connection status. It is from here
http://www.itisit.nl/uk/solutions/tuning/
-----------
Sometime sockets are in CLOSE_WAIT state, this state conducts when a client doesn’t answer back anymore with the last ack N+1. A client crashing while they had a connection is occurring may times as a result the socket isn’t closed properly, but much more occurring bad programming is the issue why sockets are closed inappropriate. Most socket developers forget to give an explicit call for shutdown() before the close()/ socketclose(). The shutdown(RDWR) flushes the socket send and receive buffers and tells the other side to stop sending data and that it don’t have to expect data anymore. As a close()/ socketclose() is called upon the chance on a CLOSE_WAIT state is out of the question at the side of the software. According to the TCP specifications, the server has to stay in CLOSE_WAIT state to be sure that all data (TCP guarantees data transmission) is transmitted. Lot of OS developers saw this problem in the TCP specifications and added a (friendly) timeout to the CLOSE_WAIT that in most cases is adjustable. Windows NT and 2000 doesn’t foresee in a CLOSE_WAIT timeout parameter, the only way to free those resources is restarting. When there are structural CLOSE _WAIT(s) on a certain service, the best way is to contact the reseller of the service or client(s) to solve this problem because this is a clear software problem with the service, client(s) or both.
-----------