There are two different situations here. The first is that your peer has gone away and the connection is shut down; either your system has received a TCP RST or FIN packet, or it tried to send data and didn't receive an ACK in time. In that case,
Zaxo's suggestion to use
select or
eof will probably work.
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.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.