Snader's tip 25 is about timing out connect() calls, but the same principles apply to read() calls.
connect()
read()
This page last modified on 3 March 2004.