UNIX: разработка сетевых приложений
UNIX: разработка сетевых приложений читать книгу онлайн
Новое издание книги, посвященной созданию веб-серверов, клиент-серверных приложений или любого другого сетевого программного обеспечения в операционной системе UNIX, — классическое руководство по сетевым программным интерфейсам, в частности сокетам. Оно основано на трудах Уильяма Стивенса и полностью переработано и обновлено двумя ведущими экспертами по сетевому программированию. В книгу включено описание ключевых современных стандартов, реализаций и методов, она содержит большое количество иллюстрирующих примеров и может использоваться как учебник по программированию в сетях, так и в качестве справочника для опытных программистов.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Таблица 7.2. Параметры сокетов транспортного уровня
| Level | optname | get | set | Описание | Флаг | Тип данных |
|---|---|---|---|---|---|---|
| IPPROTO_TCP | TCP_MAXSEG | • | • | Максимальный размер сегмента TCP | int | |
| TCP_NODELAY | • | • | Отключает алгоритм Нагла | • | int | |
| IPPROTO_SCTP | SCTP_ADAPTION_LAYER | • | • | Указание на уровень адаптации | sctp_setadaption | |
| SCTP_ASSOCINFO | + | • | Получение и задание сведений об ассоциации | sctp_assocparamms{} | ||
| SCTP_AUTOCLOSE | • | • | Автоматическое закрытие | int | ||
| SCTP_DEFAULT_SEND_PARAM | • | • | Параметры отправки но умолчанию | sctp_sndrcvinfo{} | ||
| SCTP_DISABLE_FRAGMENTS | • | • | Фрагментация SCTP | • | int | |
| SCTP_EVENTS | • | • | Уведомление об интересующих событиях | sctp_event_subscribe{} | ||
| SCTP_GET_PEER_ADDR_INFO | + | Получение состояния адреса собеседника | sctp_paddrinfo{} | |||
| SCTP_I_WANT_MAPPED_V4_ADDR | • | • | Отображение адресов IPv4 | • | int | |
| SCTP_INITMSG | • | • | Параметры пакета INIT по умолчанию | sctp_initmsg{} | ||
| SCTP_MAXBURST | • | • | Максимальный размер набора пакетов | int | ||
| SCTP_MAXSEG | • | • | Максимальный размер фрагментации | int | ||
| SCTP_NODELAY | • | • | Отключение алгоритма Нагла | • | int | |
| SCTP_PEER_ADDR_PARAMS | + | • | Параметры адреса собеседника | sctp_paddrparams{) | ||
| SCTP_PRIMARY_ADDR | + | • | Основной адрес назначения | sctp_setprim{} | ||
| SCTP_RTOINFO | + | • | Информация RTO | sctp_rtoinfo{} | ||
| SCTP_SET_PEER_PRIMARY_ADDR | • | Основной адрес назначения собеседника | sctp_setpeerprim{} | |||
| SCTP_STATUS | + | Получение сведений о статусе ассоциации | sctp_status{} |
Существует два основных типа параметров: двоичные параметры, включающие или отключающие определенное свойство (флаги), и параметры, получающие и возвращающие значения параметров, которые мы можем либо задавать, либо проверять. В колонке «Флаг» указывается, относится ли параметр к флагам. Для флагов при вызове функции
getsockopt*optval*optvalsetsockopt*optvalВ последующих разделах этой главы приводятся дополнительные подробности о параметрах сокетов.
7.3. Проверка наличия параметра и получение значения по умолчанию
Напишем программу, которая проверяет, поддерживается ли большинство параметров, представленных в табл. 7.1 и 7.2, и если да, то выводит их значения, заданные по умолчанию. В листинге 7.1 [1] содержатся объявления нашей программы.
Листинг 7.1. Объявления для нашей программы, проверяющей параметры сокетов
//sockopt/checkopts.с 1 #include "unp.h" 2 #include <netinet/tcp.h> /* определения констант TCP_xxx */ 3 union val { 4 int i_val; 5 long l_val;
