Why do I get "connection refused" when the server isn't running?
The connect() call will only block while it is waiting to establish a
connection. When there is no server waiting at the other end, it gets
notified that the connection can not be established, and gives up with
the error message you see. This is a good thing, since if it were not
the case clients might wait for ever for a service which just doesn't
exist. Users would think that they were only waiting for the
connection to be established, and then after a while give up,
muttering something about crummy software under their breath.