Дальше: 4 Установление TCP соединения Вверх: socket Назад: 2 Структура sockaddr_in

3 Установка параметров сокета

Для управления параметрами, связанными с сокетом, используют функции setsockopt и getsockopt: int setsockopt(int socket, int level, int option_name, const void *option_value, socklen_t option_len); int getsockopt(int socket, int level, int option_name, void *option_value, socklen_t *option_len);

Функция setsockopt устанавливает параметр, заданный аргументом option_name на уровне протокола определенного аргументом level, в значение на которое указывает параметр option_value. Для присвоения параметра на уровне библиотеки сокетов, аргументу level присваивается значение SOL_SOCKET. Для установки параметра на другом уровне, аргументу level присваивается номер соответствующего протокола. На уровне библиотеки сокетов допустимыми являются следущие параметры:

SO_DEBUG
Включить запись отладочной информации. Параметр имеет логическое значение.
SO_BROADCAST
Разрешить отправку широковещательных пакетов (если данная возможность поддерживается используемым протоколом). Параметр имеет логическое значение.
SO_REUSEADDR
Разрешает повторное использование локальных адресов (если данная возможность поддерживается используемым протоколом). Параметр имеет логическое значение.
SO_KEEPALIVE
Сохраняет установленные соединения путем периодической передачи сообщений (если данная возможность поддерживается используемым протоколом). Если удаленный сокет не отвечает на сообщение, то соединение считается разорванным, процессу, осуществляющему запись в сокет, посылается сигнал SIGPIPE. Параметр имеет логическое значение.
SO_SNDBUF
Устанавливает размер буфера отправки. Параметр имеет целое значение.
SO_RCVBUF
Устанавливает размер буфера приема сообщений. Параметр имеет целое значение.
SO_SNDTIMEO
Устанавливает максимальный интервал времени в течение которого функция вывода ждет завершения. Если функция, отправляющая данные, не завершается в течение указанного интервала, то она либо возвращает частичный ответ, либо, если данные отправлены не были, присваивает переменной errno значение EAGAIN или EWOULDBLOCK. По умолчанию параметр равен нулю, что означает отсутствие таймаута. Параметру присваивается значение типа struct timeval.
SO_RCVTIMEO
Параметр аналогичен предыдущему, но устанавливает таймаут для функций ввода.

На уровне протокола TCP допустимы следующие параметры:

TCP_NODELAY
Не задерживать отправку данных. Если данный параметр установлен, то отключается алгоритм буферизации. Параметр имеет логическое значение.
TCP_MAXSEG
Устанавливает максимальный размер сегмента данных. Параметр имеет целое значение.
TCP_NOPUSH
Не использовать проталкивание. Параметр имеет логическое значение.
TCP_NOOPT
Не использовать параметры TCP. Параметр имеет логическое значение.

Параметры имеющие логическое значение являются целыми. Значение 0 обозначает, что соответствующий параметр будет отключен, значение 1 обозначает, что параметр будет включен. В случае успешного завершения функция фозвращает ноль, если возникли ошибки, то результат равен -1.

Функция getsockopt возвращает значение указанного параметра. Помимо вышеперечисленных параметров могут использоваться следующие:

SO_ERROR
Возвращает информацию о коде ошибки. Параметр имеет целое значение.
SO_TYPE
Возвращает тип сокета. Параметр имеет целое значение.



Zwon
2002-03-24