Таблица 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
является целым числом. Возвращаемое значение
*optval
нулевое, если параметр отключен, и ненулевое, если параметр включен. Аналогично, функция
setsockopt
требует ненулевого значения
*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;