Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 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() задается адрес структуры, куда будет помещаться эта информация. Проверка достаточно слабая (используя неструктурированные либо пакетные сокеты, несложно сформировать пакет с любым сокет-адресом отправителя), но на данном уровне это – единственно возможное средства обеспечения безопасности. Надежная аутентификация клиента и сервера может быть реализована только на прикладном уровне.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных