Исключительные ситуации, возникающие во время выполнения операций чтения и записи. Ошибки могут возникать и после установления соединения. При работе с сетевыми программами почти каждый программист сталкивается со следующими ошибками.
Аварийное завершение серверной программы. Если серверная программа завершается аварийно во время сеанса связи, операционная система закрывает сокет. С точки зрения клиента это аналогично тому, что происходит, когда удаленная программа неожиданно закрывает свой конец сокета.
В результате выполнения операции чтения это приводит к получению сообщения о конце файла EOF при следующем вызове функции read() или sysread(). При выполнении операции записи это приводит к возникновению исключения РIРE точно так же как в примерах применения канала. Если в программе будет перехвачено и обработано исключение PIPE, то функция print() или syswrite() вернет ложное значение и переменная $! будет установлена равной “Broken pipe”. В ином случае программа будет завершена аварийно по сигналу PIPE.
Произошла авария на хосте сервера при установленном соединении. Если авария хоста происходит во время активного обмена данными по соединению TCP, операционная система не имеет возможности корректно закрыть это соединение. Операционная система, в которой работает клиентская программа, не может отличить хост, прекративший работу, от хоста, который просто очень медленно отрабатывает сетевое взаимодействие. Локальный хост будет продолжать повторно передавать пакеты IP в надежде на то, что удаленный хост возобновит свою работу. С точки зрения клиента текущий вызов операции чтения или записи блокируется на неопределенное время.