23.9. Проверка соединения и ошибки доступа

23.9. Проверка соединения и ошибки доступа

Механизм периодической проверки соединения, предоставляемый протоколом SCTP, основан на той же концепции, что и параметр поддержания соединения TCP keep-alive. Однако в SCTP этот механизм по умолчанию включен, тогда как в TCP он выключен. Приложение может устанавливать пороговое значение количества неудачных проверок при помощи того же параметра сокета, который использовался в разделе 23.8. Порог ошибок — это количество пропущенных проверочных пакетов и тайм-аутов повторной передачи, после которого адрес получателя считается недоступным. Когда доступность адреса восстанавливается (о чем сообщают все те же проверочные пакеты), он снова становится активным.

Приложение может отключить проверку соединения, но без нее SCTP не сможет узнать о доступности адреса собеседника, который ранее был признан недоступным. Без вмешательства пользователя такой адрес не сможет стать активным.

Параметр проверки соединения задается полем spp_hbinterval структуры sctp_paddrparams. Если приложение устанавливает это поле равным SCTP_NO_HB (эта константа имеет значение 0), проверка соединения отключается. Ненулевое значение устанавливает задержку проверки соединения в миллисекундах. К фиксированной задержке прибавляется текущее значение таймера повторной передачи и некоторое случайное число, в результате чего получается реальный промежуток времени между проверками соединения. В листинге 23.14 приводится небольшая функция, которая позволяет устанавливать задержку проверки соединения, или вовсе отключать этот механизм протокола SCTP для конкретного адресата. Обратите внимание, что если поле spp_pathmaxrxr структуры sctp_paddrparams оставить равным нулю, текущее значение задержки останется неизменным.

Листинг 23.14. Управление периодической проверкой соединения

//sctp/sctp_modify_hb.c

 1 #include "unp.h"

 2 int

 3 heartbeat_action(int sock_fd, struct sockaddr *sa, socklen_t salen,

 4 u_int value)

 5 {

 6  struct sctp_paddrparams sp;

 7  int siz;

 8  bzero(&sp, sizeof(sp));

 9  sp.spp_hbinterval = value;

10  memcpy((caddr_t)&sp, spp_address, sa.salen);

11  Setsockopt(sock_fd, IPPROTO_SCTP,

12   SCTP_PEER_ADDR_PARAMS, &sp, sizeof(sp));

13  return(0);

14 }

Обнуление структуры sctp_paddrparams и копирование аргумента

8-9 Мы обнуляем структуру sctp_paddrparams, чтобы случайно не изменить какой-нибудь параметр, который нас не интересует. Затем мы копируем в нее переданное пользователем значение задержки: SCTP_ISSUE_HB, SCTP_NO_HB или конкретное число.

Установка адреса

10 Функция подготавливает адрес и копирует его в структуру sctp_paddrparams, чтобы реализация SCTP знала, к какому адресу относятся устанавливаемые нами параметры периодической проверки соединения.

Выполнение действия

11-12 Наконец, функция делает вызов параметра сокета, чтобы выполнить запрошенную пользователем операцию.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

404-ошибки

Из книги Разгони свой сайт автора Мациевский Николай

404-ошибки Если сервер не может удовлетворить запрос браузера по причине того, что ни один файл не соответствует запрошенному, то он отвечает со статус-кодом 404 (File Not Found). Таким образом, браузер понимает, что не может получить соответствующий ресурс, и стандартным образом


Ошибки

Из книги Советы по Delphi. Версия 1.0.6 автора Озеров Валентин

Ошибки Delphi2 Ошибка в руководстве "Getting Started" на странице 42 Я только что установил Delphi 2.0, все прошло успешно и без единой ошибки, в процессе инсталляции коментарии и замечания не возникали.Далее в Delphi 2.0 я открываю руководство "Getting Started" (Подготовка). Согласно странице 42, "Adding a


Ошибки удаленного соединения

Из книги Очень хороший самоучитель пользователя компьютером. Как самому устранить 90% неисправностей в компьютере и увеличить его возможности автора Колисниченко Денис Николаевич

Ошибки удаленного соединения Если обычные ошибки Windows старается выводить без указания кода ошибки (где это возможно), то все ошибки удаленных соединений выводятся только с кодом (табл. 6.3): именно код помогает администратору однозначно идентифицировать ошибку. Ведь


Ошибки драйверов

Из книги Сбои и ошибки ПК. Лечим компьютер сами автора Донцов Дмитрий

Ошибки драйверов Пожалуй, одной из главных причин, приводящей к нестабильности работы Windows ХР, является недостаточно продуманное и небезопасное использование драйверов установленных и подключенных устройств. Чаще всего это касается драйверов принтера и


7.4. Проверка реальной скорости соединения

Из книги Первые шаги с Windows 7. Руководство для начинающих автора Колисниченко Денис Н.

7.4. Проверка реальной скорости соединения Провайдер может обещать скорость соединения, скажем в 2 Мбит/с, но одно дело обещать, а другое — обеспечить. Сейчас мы проверим реальную скорость вашего соединения. Установите соединение с Интернетом и запустите любой браузер.


22.1. Ошибки и отладка

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

22.1. Ошибки и отладка Самыми страшными являются не синтаксические, а так называемые логические ошибки. Ваша программа может содержать хоть сотню мелких синтаксических ошибок — там не так функцию написали, там забыли указать параметр, а где-то пропустили точку с запятой.


Проверка соединения с помощью ping

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Проверка соединения с помощью ping Вы сделали все нужные изменения. Последняя проверка нужна, чтобы убедиться, что ваша клиентская машина может связываться с сервером. Вы можете быстро проверить, что ваш клиент TCP/IP связывается с сервером, используя в окне командной строки


11.1. Проверка прав доступа

Из книги Linux программирование в примерах автора Роббинс Арнольд

11.1. Проверка прав доступа Как мы видели в разделе 5.4.2 «Получение информации о файлах», файловая система хранит идентификаторы владельца и группы файла в виде числовых значений; это типы uid_t и gid_t соответственно. Для краткости мы используем для «идентификатора владельца


Ошибки

Из книги Русский справочник по Win32 API автора Сорока Тарас

Ошибки Beep Функция Beep генерирует простые звуки на динамике компьютера. Функция синхронная; она не возвращает управления до тех пор, пока звук не прекратится. BOOL Beep ( DWORD dwFreq , // частота звука в герцах DWORD dwDuration // продолжительность звука в миллисекундах ); Параметры Windows NT :


17. Ошибки и барьеры

Из книги Инфобизнес за один день автора Ушанов Азамат

17. Ошибки и барьеры Людям нравится знать, как себя вести, если появляются какие-то препятствия, барьеры, ошибки. Мы хотим их избежать. «15 основных ошибок при знакомстве с женщинами в клубах», «15 основных ошибок в выборе сноуборда». Мы хотим уберечь себя от потенциальных


8.2. Функция access(): проверка прав доступа к файлу

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

8.2. Функция access(): проверка прав доступа к файлу Функция access() определяет, имеет ли вызывающий ее процесс право доступа к заданному файлу. Функция способна проверить любую комбинацию привилегий чтения, записи и выполнения, а также факт существования файла.Функция access()


17.1. Проверка прав доступа к файлу

Из книги Linux и UNIX: программирование в shell. Руководство разработчика. автора Тейнсли Дэвид

17.1. Проверка прав доступа к файлу Основные форматы команды test:test условиеили[ условие ]Обратите внимание, что с обеих сторон от условия обязательно остаются пробелы. При проверке права на доступ к файлу может применяться довольно много условий. В табл. 17.1 содержится


18.3.7. Проверка прав доступа к файлу

Из книги автора

18.3.7. Проверка прав доступа к файлу Вы можете также осуществлять контроль прав доступа к файлу. Ниже приводится несложная проверка на предмет того, можно ли вести записи в файле test.txt, который переприсвоен переменной logfile.$ pg ifwr#!/bin/sh# ifwrLOGFILE=test.txt echo $LOGFILEif [ ! —w "$LOGFILE" ]; thenecho " You