Книга: Основы программирования в Linux
Параметры сокета
Параметры сокета
Существует много параметров, которые можно применять для управления поведением соединений на базе сокетов — слишком много для подробного описания в этой главе. Для манипулирования параметрами используют функцию setsockopt
:
#include <sys/socket.h>
int setsockopt(int socket, int level, int option_name,
const void *option value, size_t option len);
Задавать параметры можно на разных уровнях иерархии протоколов. Для установки параметров на уровне сокета вы должны задать level
равным SOL_SOCKET
. Для задания параметров на более низком уровне протоколов (TCP, UDP и т.д.) приравняйте параметр level номеру протокола (полученному либо из заголовочного файла netinet/in.h, либо из функции getprotobyname
).
В аргументе option_name
указывается имя задаваемого параметра, аргумент option_value
содержит произвольное значение длиной option_len
байтов, передаваемое без изменений обработчику низкоуровневого протокола.
Параметры уровня сокета определены в заголовочном файле sys/socket.h и включают приведенные в табл. 15.4 значения.
Таблица 15.5
Параметр | Описание |
---|---|
SO_DEBUG |
Включает отладочную информацию |
SO_KEEPALIVE |
Сохраняет активными соединения при периодических передачах |
SO_LINGER |
Завершает передачу перед закрытием |
Параметры SO_DEBUG
и SO_KEEPALIVE
принимают целое значение option_value
для установки или включения (1) и сброса или выключения (0). Для параметра SO_LINGER
нужна структура типа linger
, определенная в файле sys/socket.h и задающая состояние параметра и величину интервала задержки.
Функция setsockopt
возвращает 0 в случае успеха и -1 в противном случае. На страницах интерактивного справочного руководства описаны дополнительные параметры и ошибки.
- Параметры сокета SO_REUSEADDR и SO_REUSEPORT
- Параметр сокета IP_RECVIF
- Параметр сокета SCTP_GET_PEER_ADDR_INFO
- Особенности символьного сокета версии IPv6
- Параметр сокета IP_OPTIONS
- Параметр сокета SO_KEEPALIVE
- Параметр сокета IP_TOS
- Параметр сокета SO_LINGER
- Параметр сокета SCTP_ADAPTION_LAYER
- Параметр сокета TCP_NODELAY
- Параметр сокета SCTP_STATUS
- Параметр сокета IPV6_NEXTHOP