Книга: 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
.
- Параметр сокета SCTP_ADAPTION_LAYER
- Параметр сокета SCTP_ASSOCINFO
- Параметр сокета SCTP_AUTOCLOSE
- Параметр сокета SCTP_DEFAULT_SEND_PARAM
- Параметр сокета SCTP_DISАВLE_FRAGМENTS
- Параметр сокета SCTP_EVENTS
- Параметр сокета SCTP_GET_PEER_ADDR_INFO
- Параметр сокета SCTP_I_WANT_MAPPED_V4_ADDR
- Параметр сокета SCTP_INITMSG
- Параметр сокета SCTP_MAXBURST
- Параметр сокета SCTP_MAXSEG
- Параметр сокета SCTP_NODELAY
- Параметр сокета SCTP_PEER_ADDR_PARAMS
- Параметр сокета SCTP_PRIMARY_ADDR
- Параметр сокета SCTP_RTOINFO
- Параметр сокета SCTP_SET_PEER_PRIMARY_ADDR
- Параметр сокета SCTP_STATUS
- Default Constructible
- Параметр сокета SCTP_I_WANT_MAPPED_V4_ADDR
- 7.10. Параметры сокетов SCTP
- Параметр сокета SCTP_NODELAY
- Основные параметры ЭЛТ-мониторов
- Безопасность внешних таблиц. Параметр EXTERNAL FILE DIRECTORY
- Единое имя файла параметров InterBase
- Параметры конфигурационного файла InterBase
- Параметры в ibconfig
- Показания к изменению параметра