Alan,
I'd like to reply to some of the things in your message, I'll put my 
comments inline.
The hanging thing is a new one. Are other people using this socket server?
It doesn't sound like the socket server is not responding, it sounds like
you are connecting and then being hung up.
"Socket" is a set of routines that can be used for many different 
things...   I assume this example is TCP?
It is an extremely frequent issue with TCP that they "hang" when a 
firewall is blocking the connection, or when the network connection gets 
broken, etc.  TCP is meant to be completely reliable, so the receiving 
side will send acknowledgements of the data received, and the sender 
will re-send anything that wasn't acknowledged, basically it'll get 
stuck re-sending indefinitely if it gets no response.
For that reason, you should always implement a time out mechanism in a 
TCP application.
Normally socket attempts to make a connection. That connection is either
accepted or rejected. If there is nothing to connect to it just returns an
error.
...but that error can only be received if the network connection is open 
and working.  If something is blocking it (a firewall, or something like 
an unplugged cable, power turned off, etc... anything that would prevent 
the error message being sent back) instead of an error, you'll sit and 
wait indefinitely.
If by "socket server" (hate that term) you don't mean a TCP server but 
you mean something else, then my comments above may not apply. It'd help 
me out a lot if you'd be more specific rather than using terms like 
"socket server" or "socket client".  Say TCP if you mean TCP.  If you 
can be even more specific (like Telnet, FTP, HTTP, SMTP, PPTP, etc) then 
please do.
As an Amazon Associate we earn from qualifying purchases.