Using sysread(), your indication that the other end
has closed the connection would be a "successful sysread
of zero bytes". This works when the other end does an
orderly close() or shutdown() of the send side of
the socket. So, you would have to test the return
value of sysread() for undef (error) and zero( end of
file, a.k.a, client closed connection ).
in reply to Detecting a closed socket
In the event that something unusual happens ( perhaps
the client crashed ?), keepalives could be helpful.