Документация по LinuxLinuxDoc.Ru 🔍

getsockopt, setsockopt - считывает и устанавливает параметры, связанные с сокетом

НАЗВАНИЕ
getsockopt, setsockopt - считывает и устанавливает
параметры, связанные с сокетом

СИНТАКСИС
#include
#include


int getsockopt(int s, int level, int optname, void *opt-
val, socklen_t *optlen);

int setsockopt(int s, int level, int optname, const void
*optval, socklen_t optlen);

ОПИСАНИЕ

getsockopt и setsockopt управляют параметрами,
установленными в сокете. Параметры могут существовать на
нескольких уровнях протоколов; они всегда располагаются на
самом верхнем из них. При работе с параметрами сокета
должен быть указан уровень протокола, на котором находится
этот параметр, и имя этого параметра. Для манипуляции
параметрами на уровне сокета level задается как
SOL_SOCKET. Для манипуляции параметрами на любом другом
уровне этим функциям передается номер соответствующего
протокола, управляющего параметрами. Например, для
указания, что флаг должен интерпретироваться протоколом
TCP, аргумент level должен передавать номер протокола TCP;
см. описание getprotoent(3). Аргументы optval и optlen
используются в функции setsockopt для доступа к значениям
параметров. В случае вызова getsockopt , они задают
буфер, в который нужно поместить запрошенное значение
параметра. В случае вызова getsockopt аргумент optlen
передается по ссылке. При вызове он содержит размер
буфера, на который указывает аргумент optval, а после
вызова - действительный размер возвращенного значения.
Если значение параметра не используется, то аргумент opt-
val может быть NULL. optname и все указанные параметры
без изменений передаются для интерпретации
соответствующему модулю протоколов. Файл
содержит определения параметров уровня сокета, описанные
ниже. Параметры на других уровнях протоколов различаются
по формату и по имени. Обращайтесь к соответствующим
пунктам руководства из раздела 4. Большинство параметров
на уровне сокета используют тип int для аргумента optval.
Для функции setsockopt аргумент должен быть ненулевым,
чтобы установить параметр логического типа, или 0, чтобы
сбросить этот параметр. Описание доступных параметров
сокетов находится в socket(7) и соответствующих протоколам
страницах руководства.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном завершении вызова возвращается нулевое
значение. При ошибке возвращается -1, а переменной errno
присваивается соответствующий код ошибки.

КОДЫ ОШИБОК

EBADF Некорректный файловый описатель s.

ENOTSOCK
Аргумент s является файлом, а не сокетом.

ENOPROTOOPT
Параметр неизвестен на данном уровне.

EFAULT Адрес, на который указывает аргумент optval, не
находится в доступной части адресного пространства
процесса. В случае вызова getsockopt эта ошибка
может также появиться, если optlen выходит за
пределы адресного пространства процесса.

СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4, 4.4BSD (эти системные вызовы впервые появились в
4.2BSD). SVr4 описывает дополнительные коды ошибок ENOMEM
и ENOSR, но не описывает флаги SO_SNDLOWAT, SO_RCVLOWAT,
SO_SNDTIMEO, SO_RCVTIMEO.

ЗАМЕЧАНИЕ

Пятый аргумент вызова getsockopt и setsockopt в
действительности имеет тип int (это именно так в BSD 4.*,
libc4 и libc5). При разработке стандарта POSIX возникло
недоразумение, и появился тип socklen_t. Черновая версия
стандарта ещё не утверждена, но glibc2 уже следует этому
стандарту и имеет тип socklen_t. Смотри также accept(2).

НАЙДЕННЫЕ ОШИБКИ
Некоторые параметры сокетов должны обрабатываться на более
низких уровнях системы.
Читать новости Linux в Telegram
Linux - getsockopt, setsockopt - считывает и устанавливает параметры, связанные с сокетом
Мы в соцсетях ✉