UNIX: разработка сетевых приложений
UNIX: разработка сетевых приложений читать книгу онлайн
Новое издание книги, посвященной созданию веб-серверов, клиент-серверных приложений или любого другого сетевого программного обеспечения в операционной системе UNIX, — классическое руководство по сетевым программным интерфейсам, в частности сокетам. Оно основано на трудах Уильяма Стивенса и полностью переработано и обновлено двумя ведущими экспертами по сетевому программированию. В книгу включено описание ключевых современных стандартов, реализаций и методов, она содержит большое количество иллюстрирующих примеров и может использоваться как учебник по программированию в сетях, так и в качестве справочника для опытных программистов.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
union sctp_notification { struct sctp_tlv sn_header; struct sctp_assoc_change sn_assoc_change; struct sctp_paddr_change sn_paddr_change; struct sctp_remote_error sn_remote_error; struct sctp_send_failed sn_send_failed; struct sctp_shutdown_event sn_shutdown_event; struct sctp_adaption_event sn_adaption_event; struct sctp_pdapi_event sn_pdapi_event;};Обратите внимание, что для интерпретации значения типа используется поле
sn_headersn_headersn_typeSCTP_EVENTSТаблица 9.2. Тип и поле подписки
| sn_type | Поле подписки |
|---|---|
| SCTP_ASSOC_CHANGE | sctp_association_event |
| SCTP_PEER_ADDR_CHANGE | sctp_address_event |
| SCTP_REMOTE_ERROR | sctp_peer_error_event |
| SCTP_SEND_FAILED | sctp_send_failure_event |
| SCTP_SHUTDOWN_EVENT | sctp_shutdown_event |
| SCTP_ADAPTION_INDICATON | sctp_adaption_layer_event |
| SCTP_PARTIAL_DELIVERY_EVENT | sctp_partial_delivery_event |
У каждого уведомления имеется своя собственная структура, которая содержит подробную информацию о произошедшем событии.
■
SCTP_ASSOC_CHANGEЭто уведомление сообщает приложению о том, что произошло изменение, связанное с ассоциациями: возникла новая ассоциация или завершилась существующая. Структура данных имеет следующий формат:
struct sctp_assoc_change { u_int16_t sac_type; u_int16_t sac_flags; u_int32_t sac_length; u_int16_t sac_state; u_int16_t sac_error; u_int16_t sac_outbound_streams; u_int16_t sac_inbound_streams; sctp_assoc_t sac_assoc_id; uint8_t sac_info[];};Поле
sac_state□
SCTP_COMM_UPinbound_streamsoutbound_streams□
SCTP_COMM_LOSTSO_LINGERsendmsgMSG_ABORTsac_info□
SCTP_RESTART□
SCTP_SHUTDOWN_COMPshutdownsendmsgMSG_EOF□
SCTP_CANT_STR_ASSOCПоле
sac_errorsac_inbound_streamssac_outbound_streamsassocsacsac_info■
SCTP_PEER_ADDR_CHANGEstruct 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_aaddrspc_stateТаблица 9.3. Уведомление о состоянии адреса собеседника
| spc_state | Значение |
|---|---|
| SCTP_ADDR_ADDED | Адрес добавлен к ассоциации |
| SCTP_ADDR_AVAILABLE | Адрес доступен |
| SCTP_ADDR_CONFIRMED | Адрес подтвержден и считается действующим |
| SCTP_ADDR_MADE_PRIM | Адрес сделан основным |
| SCTP_ADDR_REMOVED | Адрес удален из списка адресов ассоциации |
| SCTP_ADDR_UNREACHABLE | Адрес недоступен |
