<?xml version="1.0" encoding="windows-1252"?>
<node id="999808" title="Re: IO::Select and correct way to detect client crashed?" created="2012-10-18 15:50:08" updated="2012-10-18 15:50:08">
<type id="11">
note</type>
<author id="647953">
sundialsvc4</author>
<data>
<field name="doctext">
&lt;p&gt;
The only practical way that I have ever found to determine whether a client has crashed is to oblige the protocol between the two to periodically send a &amp;ldquo;heartbeat&amp;rdquo; message if there is nothing else to be sent during some mutually agreed-upon interval. &amp;nbsp; The host should record the latest timestamp as each socket sends a message, or just a boolean flag, and use a periodic timer, say about half-again as long as the heartbeat, to check for absence of response within that time. &amp;nbsp; Upon which the host might &lt;em&gt;presume&lt;/em&gt; that the client is dead. &amp;nbsp; You see, you really can&amp;rsquo;t be 100% sure, AFAIK, that all of the intermediates between here-and-there are still in good working order. &amp;nbsp; Maybe the host knows that the socket has been closed or that communication has failed, or maybe it doesn&amp;rsquo;t. &amp;nbsp; But if a bottle washes up on shore, even if it&amp;rsquo;s empty, you know the sender is still out there.
&lt;/p&gt;
</field>
<field name="root_node">
999744</field>
<field name="parent_node">
999744</field>
</data>
</node>
