Вход/Регистрация
UNIX: разработка сетевых приложений
вернуться

Стивенс Уильям Ричард

Шрифт:

SCTP_RESTART
— собеседник перезапущен. Наиболее типичной причиной этого уведомления бывает выход из строя и перезапуск собеседника. Приложение должно проверить количество потоков в обоих направлениях, потому что при перезапуске эти значения могут измениться;

SCTP_SHUTDOWN_COMP
— закончено завершение соединения, инициированное локальной конечной точкой (вызовом
shutdown
или
sendmsg
с флагом
MSG_EOF
). После получения этого сообщения сокет типа «один-к-одному» может быть использован для подключения к другому собеседнику;

SCTP_CANT_STR_ASSOC
— собеседник не ответил при попытке установления ассоциации.

Поле

sac_error
содержит коды причин ошибок протокола SCTP, которые могли привести к изменению состояния ассоциации. Поля
sac_inbound_streams
и
sac_outbound_streams
говорят о том, какое количество потоков в каждом направлении было согласовано во время установки ассоциации. Поле sac_
assoc
_id содержит уникальный идентификатор ассоциации, который может использоваться как при работе с параметрами сокета, так и в последующих уведомлениях. Наконец, поле
sac
_info может содержать дополнительные пользовательские сведения. Например, если ассоциация была разорвана собеседником в связи с ошибкой, определенной пользователем, код этой ошибки будет помещен в поле
sac_info
.

SCTP_PEER_ADDR_CHANGE
Это уведомление говорит об изменении состояния одного из адресов собеседника. Изменение может заключаться либо в отказе (отсутствии подтверждения отправленных на этот адрес данных), либо в восстановлении (ответе отказавшего ранее адреса). Структура данных имеет следующий формат:

struct sctp_paddr_change {

u_int16_t spc_type;

u_int16_t spc_flags;

u_int32_t spc_length;

struct sockaddr_storage spc_aaddr;

u_int32_t spc_state;

u_int32_t spc_error;

sctp_assoc_t spc_assoc_id;

};

Поле

spc_aaddr
содержит адрес собеседника, с которым связано данное событие. Поле
spc_state
может принимать одно из значений, перечисленных в табл. 9.3.

Таблица 9.3. Уведомление о состоянии адреса собеседника

spc_state Значение
SCTP_ADDR_ADDED Адрес добавлен к ассоциации
SCTP_ADDR_AVAILABLE Адрес доступен
SCTP_ADDR_CONFIRMED Адрес подтвержден и считается действующим
SCTP_ADDR_MADE_PRIM Адрес сделан основным
SCTP_ADDR_REMOVED Адрес удален из списка адресов ассоциации
SCTP_ADDR_UNREACHABLE Адрес недоступен

Данные, отправленные на недоступный (

SCTP_ADDR_UNREACHABLE
) адрес, будут направляться на альтернативный адрес. Некоторые состояния доступны только в тех реализациях SCTP, которые поддерживают динамическую адресацию (в частности,
SCTP_ADDR_ADDED
и
SCTP_ADDR_REMOVED
).

Поле

spc_error
содержит код ошибки, дающий больше сведений о событии, а поле
spc_assoc_id
, как обычно, хранит идентификатор ассоциации.

SCTP_REMOTE_ERROR

Собеседник может отправить на локальную конечную точку сообщение об ошибке. Такие сообщения могут описывать различные ошибочные состояния ассоциации. Если это уведомление включено, вся сбойная порция данных передается приложению в сетевом формате. Сообщение имеет следующий формат:

struct sctp_remote_error {

u_int16_t sre_type;

u_int16_t sre_flags;

u_int32_t sre_length;

u_int16_t sre_error;

sctp_assoc_t sre_assoc_id;

u_int8_t sre_data[];

};

Поле

sre_error
содержит код причины ошибки протокола SCTP;
sre_assoc_id
— идентификатор ассоциации, a
sre_data
— ошибочную порцию данных в сетевом формате.

SCTP_SEND_FAILED

Сообщение, которое невозможно доставить собеседнику, возвращается отправителю в этом уведомлении. За таким уведомлением обычно следует уведомление об отказе ассоциации. В большинстве случаев доставка сообщения оказывается невозможной именно по причине отказа ассоциации. Если же используется режим частичной надежности SCTP, сообщение может быть возвращено и в том случае, если отказа ассоциации реально не произошло.

  • Читать дальше
  • 1
  • ...
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: