I thought about this too (long ago), but this approach
has two problems:
As during development happens, the server may crash, leaving an open socket. Only the server has the detection routine to clean up a left socket after its unsuccessfull predecessor-instance.
You speak of a sleep-replacement, which means
polling. I don't like polling. :-)