Вам необходимо выполнить
выберите
, чтобы определить, есть ли какие-либо данные, ожидающие до
RECV
функция, чтобы избежать зависания. О какой платформе вы говорите?
Посмотрите на выберите документ и IO :: Socket doc .
В отношении других документов я бы порекомендовал либо «Сетевое программирование на Perl» от Stein, либо классическое «Сетевое программирование Unix» Стивенса.
Практически он основан на использовании протокола эхо / пинга, потому что не все проблемы физической сети вызывают исключения (например, при отключении сетевого кабеля на одном компьютере, удаленный компьютер не видит его).