in reply to How to find out whether socket is still connected?
The other situation is that your peer has disappeared, for example crashed, had a network failure, etc. In this case, there's no way to know that without sending some data. That's why many protocols have a NOOP operation or PING and PONG packets, as izut suggests. TCP keepalives are one option; on many systems you can set a system-wide timeout for TCP connections. If the connections are idle for that long, the kernel will send an empty packet to test the connection, and the connection will be shut down if it receives no response. Unfortunately I don't know of a way to send a 0-size probe packet from userspace.
|
|---|