UNIX: разработка сетевых приложений
UNIX: разработка сетевых приложений читать книгу онлайн
Новое издание книги, посвященной созданию веб-серверов, клиент-серверных приложений или любого другого сетевого программного обеспечения в операционной системе UNIX, — классическое руководство по сетевым программным интерфейсам, в частности сокетам. Оно основано на трудах Уильяма Стивенса и полностью переработано и обновлено двумя ведущими экспертами по сетевому программированию. В книгу включено описание ключевых современных стандартов, реализаций и методов, она содержит большое количество иллюстрирующих примеров и может использоваться как учебник по программированию в сетях, так и в качестве справочника для опытных программистов.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
■
sinfo_cumtsnrecvmsgsctp_recvmsg■
sinfoТаблица 7.5. Допустимые значения флагов SCTP (поле sinfo_flags)
| Константа | Описание |
|---|---|
| MSG_ABORT | Вызывает аварийное завершение ассоциации |
| MSG_ADDR_OVER | Заставляет SCTP использовать указанный адрес вместо адреса по умолчанию |
| MSG_EOF | Корректное завершение ассоциации после отправки сообщения |
| MSG_PR_BUFFER | Включение частичной надежности в зависимости от буфера (если она вообще поддерживается) |
| MSG_PR_SCTP | Включение частичной надежности доставки для данного сообщения (если поддерживается) |
| MSG_UNORDERED | Указывает, что данное сообщение использует сервис неупорядоченной доставки |
Обратите внимание, что значения параметров по умолчанию используются только тогда, когда сообщение отправляется без собственной структуры
sctp_sndrcvinfoSCTP_DEFAULT_SEND_PARAMsctp_opt_infoПараметр сокета SCTP_DISАВLE_FRAGМENTS
В обычном режиме работы SCTP фрагментирует все сообщения, не помещающиеся в один пакет SCTP, разбивая их на несколько порций типа DATA. Установка параметра
SCTP_DISABLE_FRAGMENTSEMSGSIZEПараметр может использоваться приложениями, которые хотят самостоятельно управлять размерами сообщений, при условии, что любое из этих сообщений может поместиться в IP-пакет. Приложение должно быть готово обработать ошибку, обеспечив фрагментацию на уровне приложения или изменение размера сообщений.
Параметр сокета SCTP_EVENTS
Этот параметр сокета позволяет включать, выключать и определять состояние подписки на различные уведомления SCTP. Уведомление SCTP представляет собой сообщение, отправляемое стеком SCTP приложению. Сообщение считывается как и обычные данные, однако в поле
msg_flagsrecvmsgMSG_NOTIFICATIONrecvmsgsctp_recvmsgsctp_event_subscribeСтруктура
sctp_event_subscribestruct sctp_event_subscribe { u_int8_t sctp_data_io_event; u_int8_t sctp_association_event; u_int8_t sctp_address_event; u_int8_t sctp_send_failure_event; u_int8_t sctp_peer_error_event; u_int8_t sctp_shutdown_event; u_int8_t sctp_partial_delivery_event; u_int8_t sctp_adaption_layer_event;};В табл. 7.6 описано назначение различных событий. Подробнее об уведомлениях вы узнаете в разделе 9.14.
Таблица 7.6. События SCTP
| Константа | Описание |
|---|---|
| sctp_data_io_event | Включение и отключение доставки sctp_sndrcvinfo с каждым вызовом recvmsg |
| sctp_association_event | Включение и отключение уведомлений о состоянии ассоциации |
| sctp_address_event | Включение и отключение уведомлений об адресах |
| sctp_send_failure_event | Включение и отключение уведомлений об ошибках доставки сообщений |
| sctp_peer_error_event | Включение и отключение уведомлений об ошибках протокола собеседника |
| sctp_shutdown_event | Включение и отключение уведомлений о завершении ассоциации |
| sctp_partial_delivery_event | Включение и отключение уведомлений о частичной доставке |
| sctp_adaption_layer_event | Включение и отключение уведомлений уровня-адаптера |
Параметр сокета SCTP_GET_PEER_ADDR_INFO
Этот параметр позволяет получить информацию о собеседнике, которая включает окно приема, сглаженные значения RTT и MTU. Параметр может быть применен только к конкретному адресу собеседника. Вызывающее приложение заполняет поле
spinfo_addresssctp_paddrinfosctp_opt_infogetsockoptsctp_paddrinfostruct sctp_paddrinfo { sctp_assoc_t spinfo_assoc_id; struct sockaddr_storage spinfo_address; int32_t spinfo_state; uint32_t spinfo_cwnd; u_int32_t spinfo_srtt; u_int32_t spinfo_rto; u_int32_t spinfo_mtu;
