ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Обработка ошибок и отладка программ
Для диагностики ошибок функции интерфейса сокетов при возникновении таких ошибок обычно возвращают отрицательные значения (коды ошибок). Каждая из функций чтения (read (), recv (), recvfrom()) возвращает: · Положительное значение (>0) - было получено определенное число байтов, и именно оно и возвращается; · 0 - удаленный процесс закрыл соединение (выполнил close). · Отрицательное число (-1) - если соединение разорвано или не устанавливалось; Таким образом, можно различить нарушение связи по сети и завершение удаленного процесса. Ошибки при выполнении любой функции записи (write(), send(), sendto()) приводит к генерации передаваемого процессу сигнала SIGPIPE (действие по умолчанию – завершение текущего процесса). Указанные две ситуации здесь уже не различаются. С сокетами связаны 3 сигнала: · SIGIO: указывает на то, что сокет готов к асинхронному вводу-выводу. Асинхронный ввод-вывод программируется аналогично файловому. Сигнал посылается процессу или группе процессов, связанных с сигналом. · SIGURG: указывает на то, что на сокете получены срочные данные. В обработчике этого сигнала обычно и программируется прием этих данных. Посылается процессу или группе процессов, связанных с сигналом. · SIGPIPE: указывает на то, что запись на сокете более невозможна (см. выше). Посылается процессу, связанному с сокетом. Отладка программ обычно осуществляется следующим образом: · Клиент и сервер отлаживаются локально на одной системе, используя сокеты в локальной области, петлевой (loopback) IP-адрес, либо задавая IP-адрес собственного хоста (такой обмен часто блокируется межсетевым экраном). · Клиент и сервер переносятся сервер на разные системы и окончательно отлаживаются. При использовании потоковых сокетов сервер, обрабатывающий только текстовую информацию, сервер можно проверить независимо от клиента, используя утилиту telnet с опцией номера порта:
telnet <IP-адрес> <номер порта>
После установления соединения любой введенный с клавиатуры символ посылается серверу и им обрабатывается. Например, таким образом можно успешно работать с почтовыми серверами. Иформацию о состоянии сокетов, включая номера используемых портов и состояние соединений, можно получить с помощью многоплатформенной команды netstat:
Netstat -an
Обеспечение безопасности при использование интерфейса сокетов осуществляется единственным способом – проверкой на сервере сокет-адреса пославшего запрос на соединение клиента. Для этого в параметрах функции accept() задается адрес структуры, куда будет помещаться эта информация. Проверка достаточно слабая (используя неструктурированные либо пакетные сокеты, несложно сформировать пакет с любым сокет-адресом отправителя), но на данном уровне это – единственно возможное средства обеспечения безопасности. Надежная аутентификация клиента и сервера может быть реализована только на прикладном уровне. Не нашли, что искали? Воспользуйтесь поиском:
|