Em 16/08/2006, às 10:24, Justin Erenkrantz escreveu:

On Wed, Aug 16, 2006 at 08:55:44AM +0100, Joe Orton wrote:
POLLERR would only be set for an RST and "exceptional conditions"; the
same applies to select()+the exceptfds array AFAIK.

There is some inconsistency with handling FIN and sockets across
platforms: http://www.greenend.org.uk/rjk/2001/06/poll.html but yes
you'd generally expect POLLIN for "you can read EOF".

Back to our original question: how can we portably detect that the socket is
still alive?  We can't do a non-blocking read() either...  -- justin

Hi,

The only portable way to "detect" a broken connection is using SO_KEEPALIVE or to write/read "ping" data through the socket -- which is what keepalive does.

There is no other way around this, most network protocols are timeout based.

--
Davi Arnaut

Reply via email to