Главная » 2017 » Ноябрь » 24 » man 2 setsockopt
05:19
man 2 setsockopt

SEO sprint - Всё для максимальной раскрутки!





ИМЯ


getsockopt, setsockopt - получить или установить флаги сокета



ОБЗОР


#include <sys/types.h> /* смотрите ЗАМЕЧАНИЯ */
#include <sys/socket.h>

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



ОПИСАНИЕ


getsockopt() и setsockopt() управляют параметрами сокета, на который указывает файловый
дескриптор sockfd. Параметры могут быть из различных уровней протоколов; они всегда
присутствуют на самом верхнем уровне сокета.

При работе с параметрами сокета должен быть указан уровень, на котором находится этот
параметр и его имя. Для работы с параметрами на уровне API сокета в level указывается
значение SOL_SOCKET. Для работы с параметрами на любом другом уровне, этим вызовам
передаётся номер соответствующего протокола, который они контролируют. Например, для
указания, что параметр должен интерпретироваться протоколом TCP, в level нужно указать номер
протокола TCP; смотрите getprotoent(3).

Аргументы optval и optlen используются в setsockopt() для доступа к значениям параметров.
Для getsockopt() они задают буфер, в который нужно поместить запрошенное значение параметра
при возврате. У getsockopt() в аргументе optlen изначально содержится размер буфера, на
который указывает optval, а при завершении в нём содержится реальный размер возвращаемого
значения. Если значение параметра не указывается или возвращается, то optval может быть
NULL.

Аргумент optname и все указанные параметры без изменений передаются для интерпретации
соответствующему модулю протоколов. Файл <sys/socket.h> содержит определения параметров
уровня сокета; их описание дано ниже. Параметры на других уровнях протоколов различаются по
формату и по имени. Обращайтесь к соответствующим файлам раздела 4 справочных страниц.

Большинство параметров уровня сокета используют тип int для аргумента optval. Чтобы
установить параметр логического типа аргумент setsockopt() должен быть ненулевым, и ноль,
если нужно отключить этот параметр.

Описание доступных параметров сокетов находится в socket(7) и соответствующих протоколам
справочных страницах.



ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ


При успешном выполнении при стандартных параметрах возвращается 0. В случае ошибки
возвращается -1, а errno устанавливается в соответствующее значение.

Netfilter позволяет программисту определять собственные параметры сокетов со привязанными
обработчиками; для таких параметров при успешном выполнении возвращается значение,
полученное от обработчика.



ОШИБКИ


EBADF Аргумент sockfd не является допустимым файловым дескриптором.

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



СООТВЕТСТВИЕ СТАНДАРТАМ


POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD (данные системные вызовы впервые появились в
4.2BSD).



ЗАМЕЧАНИЯ


В POSIX.1 не требуется включение <sys/types.h>, и этот заголовочный файл не требуется в
Linux. Однако, для некоторых старых реализаций (BSD) требует данный файл, и в переносимых
приложениях для предосторожности, вероятно, лучше его указать.

Описание типа socklen_t смотрите в accept(2).



ДЕФЕКТЫ


Некоторые параметры сокетов должны обрабатываться на более низких уровнях системы.



СМОТРИТЕ ТАКЖЕ


ioctl(2), socket(2), getprotoent(3), protocols(5), ip(7), packet(7), socket(7), tcp(7),
udp(7), unix(7)



Категория: (2) Системные вызовы ядра (функции языка Си) | Просмотров: 407 | Добавил: Администратор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar