Архив документации OpenNet.ru /
Раздел "Программирование, языки" /
Индекс
Дальше: 4 Установление TCP соединения
Вверх: socket
Назад: 2 Структура sockaddr_in
Для управления параметрами, связанными с сокетом, используют функции
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
Архив документации на OpenNet.ru