Книга: UNIX: разработка сетевых приложений

Параметр сокета SCTP_DEFAULT_SEND_PARAM

Параметр сокета SCTP_DEFAULT_SEND_PARAM

SCTP поддерживает множество дополнительных параметров отправки, которые обычно передаются в виде вспомогательных данных или используются при вызове функции sctp_sendmsg (который часто реализуется как библиотечный вызов, передающий вспомогательные данные пользователя). Приложение, планирующее отправку большого количества сообщений с одинаковыми параметрами, может воспользоваться параметром SCTP_DEFAULT_SEND_PARAM для настройки значений параметров по умолчанию и тем самым избавиться от необходимости добавлять вспомогательные данные или вызывать sctp_sendmsg. На вход параметра поступает структура sctp_sndrcvinfo:

struct sctp_sndrcvinfo {
 u_int16_t sinfo_stream;
 u_int16_t sinfo_ssn;
 u_int16_t sinfo_flags;
 u_int32_t sinfo_ppid;
 u_int32_t sinfo_context;
 u_int32_t sinfo_timetolive;
 u_int32_t sinfo_tsn;
 u_int32_t sinfo_cumtsn;
 sctp_assoc_t sinfo_assoc_id;
};

Поля структуры определяются следующим образом:

sinfo_stream задает поток, в который по умолчанию направляются все сообщения;

sinfo_ssn игнорируется при установке значений параметров по умолчанию. При получении сообщений функцией recvmsg или sctp_recvmsg это поле содержит значение потокового последовательного номера (stream sequence number, SSN), помещенное собеседником в порцию данных;

sinfo_flags устанавливает значения всех флагов для будущих сообщений. Допустимые значения флагов приводятся в табл. 7.5;

sinfo_ppid задает значение идентификатора протокола SCTP для всех будущих передач данных;

sinfo_context задает значение по умолчанию для поля sinfo_context, которое является локальной меткой для сообщений, которые не могли быть доставлены собеседнику;

sinfo_timetolive определяет время жизни отправляемых сообщений. Поле времени жизни используется стеком SCTP для того, чтобы сбрасывать сообщения, задержавшиеся в буфере отправки на слишком большой срок и не переданные ни разу. Если обе конечные точки поддерживают режим частичной надежности, параметр времени жизни влияет и на количество попыток повторной передачи, ограничивая их срок;

sinfo_tsn игнорируется при установке параметров по умолчанию. При получении сообщений функцией recvmsg или sctp_recvmsg это поле содержит значение транспортного последовательного номера (transport sequence number, TSN), помещенное собеседником в порцию данных SCTP;

sinfo_cumtsn игнорируется при установке параметров по умолчанию. При получении сообщений функцией recvmsg или sctp_recvmsg это поле содержит значение кумулятивного транспортного последовательного номера, вычисленного локальным стеком SCTP для удаленного собеседника;

sinfo_assoc_id содержит идентификатор ассоциации, для которой требуется установка параметров по умолчанию. Для сокетов типа «один-к-одному» это поле игнорируется.

Таблица 7.5. Допустимые значения флагов SCTP (поле sinfo_flags)

Константа Описание
MSG_ABORT Вызывает аварийное завершение ассоциации
MSG_ADDR_OVER Заставляет SCTP использовать указанный адрес вместо адреса по умолчанию
MSG_EOF Корректное завершение ассоциации после отправки сообщения
MSG_PR_BUFFER Включение частичной надежности в зависимости от буфера (если она вообще поддерживается)
MSG_PR_SCTP Включение частичной надежности доставки для данного сообщения (если поддерживается)
MSG_UNORDERED Указывает, что данное сообщение использует сервис неупорядоченной доставки

Обратите внимание, что значения параметров по умолчанию используются только тогда, когда сообщение отправляется без собственной структуры sctp_sndrcvinfo. Если же эта структура добавляется во вспомогательные данные при отправке сообщений, заданные в ней значения имеют приоритет перед значениями по умолчанию. Параметр SCTP_DEFAULT_SEND_PARAM может использоваться для получения текущих значений по умолчанию при помощи функции sctp_opt_info.

Оглавление книги


Генерация: 1.654. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз