Параметры сокета SOL_SOCKET

В следующих таблицах описаны SOL_SOCKET параметры сокета. Дополнительные сведения о получении и настройке параметров сокета см. на страницах справочника по функциям getsockopt и setsockopt .

Чтобы перечислить протоколы и обнаружить поддерживаемые свойства для каждого установленного протокола, используйте функцию WSAEnumProtocols, WSCEnumProtocols или WSCEnumProtocols32 .

Некоторые параметры сокета требуют больше объяснений, чем эти таблицы могут передать; такие параметры содержат ссылки на дополнительные страницы.

Примечание

Все параметры сокета SOL_SOCKET одинаково применяются к IPv4 и IPv6 (за исключением SO_BROADCAST, так как широковещательная передача не реализована в IPv6).

 

Параметры сокета SOL_SOCKET

Параметр Получить Присвойте параметру Тип Optval Описание
PVD_CONFIG да да char [] Непрозрачный объект структуры данных, содержащий сведения о конфигурации для поставщика услуг. Этот параметр зависит от реализации.
SO_ACCEPTCONN да DWORD (логическое значение) Возвращает значение, указывающее, находится ли сокет в режиме прослушивания. Этот параметр действителен только для протоколов, ориентированных на подключение.
SO_BROADCAST да да DWORD (логическое значение) Настройте сокет для отправки широковещательных данных. Этот параметр доступен только для протоколов, поддерживающих широковещательное вещание (например, IPX и UDP).
SO_BSP_STATE да CSADDR_INFO Возвращает локальный адрес, локальный порт, удаленный адрес, удаленный порт, тип сокета и протокол, используемый сокетом. Дополнительные сведения см. в справочнике по SO_BSP_STATE .
SO_CONDITIONAL_ACCEPT да да DWORD (логическое значение) Указывает, должны ли входящие подключения приниматься или отклоняться приложением, а не стеком протоколов. Дополнительные сведения см. в справочнике по SO_CONDITIONAL_ACCEPT .
SO_CONNDATA да да char [] Дополнительные данные, а не в обычном потоке сетевых данных, которые отправляются с сетевыми запросами для установления подключения. Этот параметр используется устаревшими протоколами, такими как DECNet, OSI TP4 и другие. Этот параметр не поддерживается протоколом TCP/IP в Windows.
SO_CONNDATALEN да DWORD Длина (в байтах) дополнительных данных, а не в обычном потоке сетевых данных, которая отправляется с сетевыми запросами на установление подключения. Этот параметр используется устаревшими протоколами, такими как DECNet, OSI TP4 и другие. Этот параметр не поддерживается протоколом TCP/IP в Windows.
SO_CONNECT_TIME да DWORD Возвращает количество секунд, в течение которых сокет был подключен. Этот параметр действителен только для протоколов, ориентированных на подключение.
SO_CONNOPT да да char [] Дополнительные данные параметра подключения, а не в обычном потоке сетевых данных, которые отправляются с сетевыми запросами для установки подключения. Этот параметр используется устаревшими протоколами, такими как DECNet, OSI TP4 и другие. Этот параметр не поддерживается протоколом TCP/IP в Windows.
SO_CONNOPTLEN да DWORD Длина (в байтах) данных параметра подключения, а не в обычном потоке сетевых данных, который отправляется с сетевыми запросами для установки подключения. Этот параметр используется устаревшими протоколами, такими как DECNet, OSI TP4 и другие. Этот параметр не поддерживается протоколом TCP/IP в Windows.
SO_DISCDATA да да char [] Дополнительные данные, а не в обычном потоке сетевых данных, которые отправляются с сетевыми запросами на отключение подключения. Этот параметр используется устаревшими протоколами, такими как DECNet, OSI TP4 и другие. Этот параметр не поддерживается протоколом TCP/IP в Windows.
SO_DISCDATALEN да DWORD Длина (в байтах) дополнительных данных, а не в обычном потоке сетевых данных, которая отправляется с сетевыми запросами на отключение подключения. Этот параметр используется устаревшими протоколами, такими как DECNet, OSI TP4 и другие. Этот параметр не поддерживается протоколом TCP/IP в Windows.
SO_DISCOPT да да char [] Дополнительные данные параметра отключения, а не в обычном потоке сетевых данных, которые отправляются с сетевыми запросами на отключение подключения. Этот параметр используется устаревшими протоколами, такими как DECNet, OSI TP4 и другие. Этот параметр не поддерживается протоколом TCP/IP в Windows.
SO_DISCOPTLEN да DWORD Длина (в байтах) дополнительных данных параметра отключения, а не в обычном сетевом потоке данных, который отправляется с сетевыми запросами на отключение подключения. Этот параметр используется устаревшими протоколами, такими как DECNet, OSI TP4 и другие. Этот параметр не поддерживается протоколом TCP/IP в Windows.
SO_DEBUG да да DWORD (логическое значение) Включите выходные данные отладки. Поставщики Майкрософт в настоящее время не выводить отладочную информацию.
SO_DONTLINGER да да DWORD (логическое значение) Указывает состояние элемента l_onoff структуры , связанной с сокетом. Если этот элемент не является нулевым, сокет остается открытым в течение указанного периода времени после вызова функции closesocket , чтобы включить отправку данных в очереди. Этот параметр действителен только для надежных протоколов, ориентированных на подключение.
SO_DONTROUTE да да DWORD (логическое значение) Указывает, что исходящие данные должны отправляться на любой интерфейс, к которому привязан сокет, а не на какой-либо другой интерфейс. Этот параметр действителен только для протоколов, ориентированных на сообщения. Поставщики Майкрософт игнорируют этот параметр и всегда обращаются к таблице маршрутизации, чтобы найти соответствующий исходящий интерфейс.
SO_ERROR да DWORD Возвращает код последней ошибки в этом сокете. Этот код ошибки для каждого сокета не всегда устанавливается сразу.
SO_EXCLUSIVEADDRUSE да да DWORD (логическое значение) Запрещает привязку любого другого сокета к одному адресу и порту. Этот параметр необходимо задать перед вызовом функции привязки . Дополнительные сведения см. в справочнике по SO_EXCLUSIVEADDRUSE .
SO_GROUP_ID да unsigned int Этот параметр сокета зарезервирован и не должен использоваться.
SO_GROUP_PRIORITY да да INT Этот параметр сокета зарезервирован и не должен использоваться.
SO_KEEPALIVE да да DWORD (логическое значение) Включает функцию поддержания активности для подключения к сокету. Допустимо только для протоколов, поддерживающих понятие keep-alive (протоколы, ориентированные на подключение). Для TCP время ожидания по умолчанию составляет 2 часа, а интервал поддержания активности — 1 секунда. Количество проб по умолчанию для проверки активности зависит от версии Windows. Дополнительные сведения см . в справочнике по SO_KEEPALIVE .
SO_LINGER да да struct linger Указывает состояние структуры затяжки, связанной с сокетом. Если l_onoff элемент структуры ненулевого, сокет остается открытым в течение указанного периода времени после вызова функции closesocket, чтобы включить отправку данных из очереди. Количество времени (в секундах) для того, чтобы оставаться открытым, указывается в элементе l_linger структуры затяжной структуры. Этот параметр действителен только для надежных протоколов, ориентированных на подключение.
SO_MAX_MSG_SIZE да DWORD Возвращает максимальный размер исходящего сообщения для сокетов, ориентированных на сообщения, поддерживаемых протоколом. Не имеет значения для сокетов, ориентированных на поток.
SO_MAXDG да DWORD Возвращает максимальный размер в байтах для исходящих датаграмм, поддерживаемых протоколом. Этот параметр сокета не имеет значения для сокетов, ориентированных на поток.
SO_MAXPATHDG да DWORD Возвращает максимальный размер в байтах для исходящих датаграмм, поддерживаемых протоколом, по заданному адресу назначения. Этот параметр сокета не имеет значения для сокетов, ориентированных на поток. Поставщики Майкрософт могут автоматически рассматривать это как SO_MAXDG.
SO_OOBINLINE да да DWORD (логическое значение) Указывает, что данные вне привязки должны возвращаться в соответствии с обычными данными. Этот параметр действителен только для протоколов, ориентированных на подключение, которые поддерживают внеполосные данные.
SO_OPENTYPE да да DWORD После установки влияет на то, будут ли создаваемые последующие сокеты не перекрываться. Возможные значения для этого параметра: SO_SYNCHRONOUS_ALERT и SO_SYNCHRONOUS_NONALERT. Этот параметр не следует использовать. Вместо этого используйте функцию WSASocket и оставьте бит WSA_FLAG_OVERLAPPED в параметре dwFlags отключенным.
SO_PAUSE_ACCEPT да да DWORD(boolean) Используйте этот параметр для прослушивания сокетов. Если параметр задан, сокет реагирует на все входящие подключения с помощью RST, а не принимает их.
SO_PORT_SCALABILITY да да DWORD (логическое значение) Обеспечивает масштабируемость локальных портов для сокета, позволяя максимально увеличить выделение портов, выделяя порты с подстановочными знаками несколько раз для разных пар портов локального адреса на локальном компьютере. На платформах, где доступны оба варианта, предпочитайте SO_REUSE_UNICASTPORT вместо этого варианта. Дополнительные сведения см. в справочнике по SO_PORT_SCALABILITY .
SO_PROTOCOL_INFO да WSAPROTOCOL_INFO Этот параметр определяется для параметра сокета SO_PROTOCOL_INFOW, если определен макрос ЮНИКОД. Если макрос ЮНИКОД не определен, то этот параметр определяется для параметра сокета SO_PROTOCOL_INFOA.
SO_PROTOCOL_INFOA да WSAPROTOCOL_INFOA Возвращает структуру WSAPROTOCOL_INFOA для заданного сокета.
SO_PROTOCOL_INFOW да WSAPROTOCOL_INFOW Возвращает структуру WSAPROTOCOL_INFOW для заданного сокета.
SO_RANDOMIZE_PORT да да DWORD(boolean) Этот параметр должен быть установлен для несвязанного сокета. Если задано SO_RANDOMIZE_PORT и выбран временный порт в сокете, случайный номер порта привязывается. Порты с автоматическим повторным использованием (порты, выбранные с помощью SO_REUSE_UNICASTPORT) также случайным образом определяют возвращаемый порт, поэтому если приложение задает SO_REUSE_UNICASTPORT, а затем пытается задать SO_RANDOMIZE_PORT, второй вызов setsockopt завершается ошибкой .
SO_RCVBUF да да DWORD Общее пространство буфера для каждого сокета, зарезервированное для приемок. Это не связано с SO_MAX_MSG_SIZE и не обязательно соответствует размеру окна получения TCP.
SO_RCVLOWAT да да DWORD Параметр сокета из BSD UNIX включен для обеспечения обратной совместимости. Этот параметр задает минимальное количество байтов, обрабатываемых для операций ввода сокета. Этот параметр не поддерживается поставщиком TCP/IP в Windows. Если этот параметр используется в Windows Vista и более поздних версиях, функции getsockopt и setsockopt завершаются ошибкой при использовании WSAEINVAL. В более ранних версиях Windows эти функции завершаются сбоем при использовании WSAENOPROTOOPT.
SO_RCVTIMEO да да DWORD Время ожидания (в миллисекундах) для блокировки приема вызовов. Значение по умолчанию для этого параметра равно нулю, что означает, что время ожидания операции получения не истекает. Если время ожидания блокирующего вызова приема истекает, соединение находится в неопределенном состоянии и должно быть закрыто.
Если сокет создается с помощью функции WSASocket , для правильной работы параметра dwFlags должен быть задан атрибут WSA_FLAG_OVERLAPPED. В противном случае время ожидания никогда не вступает в силу.
SO_REUSEADDR да да DWORD (логическое значение) Позволяет сокету привязаться к уже используемому адресу и порту. Параметр SO_EXCLUSIVEADDRUSE может предотвратить это.
SO_REUSE_UNICASTPORT да да DWORD (логическое значение) Если этот параметр задан, разрешите повторное использование временного порта для функций подключения API Winsock, для которых требуется явная привязка, например ConnectEx. Обратите внимание, что функции подключения с неявной привязкой (например , подключение без явной привязки) имеют этот параметр по умолчанию. Используйте этот параметр вместо SO_PORT_SCALABILITY на платформах, где доступны оба варианта.
SO_REUSE_MULTICASTPORT да DWORD Если этот параметр задан для сокета, он никогда не будет использоваться для получения одноадресных пакетов и, следовательно, его порт можно совместно использовать с другими приложениями, предназначенными только для многоадресной рассылки. Установка значения 1 позволяет всегда совместно использовать трафик многоадресной рассылки через порт. Установка значения 0 (по умолчанию) отключает это поведение.
SO_SNDBUF да да DWORD Общее пространство буфера для каждого сокета, зарезервированное для отправки. Это не связано с SO_MAX_MSG_SIZE и не обязательно соответствует размеру окна отправки TCP.
SO_SNDLOWAT да да DWORD Параметр сокета из BSD UNIX включен для обеспечения обратной совместимости. Этот параметр задает минимальное количество байтов, обрабатываемых для операций вывода сокета. Этот параметр не поддерживается поставщиком TCP/IP в Windows. Если этот параметр используется в Windows Vista и более поздних версиях, функции getsockopt и setsockopt завершаются ошибкой при использовании WSAEINVAL. В более ранних версиях Windows эти функции завершаются сбоем при использовании WSAENOPROTOOPT.
SO_SNDTIMEO да да DWORD Время ожидания (в миллисекундах) для блокировки отправки вызовов. Значение по умолчанию для этого параметра равно нулю, что означает, что время ожидания операции отправки не истекает. Если время ожидания вызова блокирующей отправки истекает, подключение находится в неопределенном состоянии и должно быть закрыто.
Если сокет создается с помощью функции WSASocket , для правильной работы параметра dwFlags должен быть задан атрибут WSA_FLAG_OVERLAPPED. В противном случае время ожидания никогда не вступает в силу.
SO_TYPE да DWORD Возвращает тип сокета для заданного сокета (например, SOCK_STREAM или SOCK_DGRAM).
SO_UPDATE_ACCEPT_CONTEXT да DWORD (логическое значение) Этот параметр используется с функцией AcceptEx . Этот параметр обновляет свойства сокета, которые наследуются от прослушивающего сокета. Этот параметр следует задать, если в принятом сокете должны использоваться функции getpeername, getockname, getockopt или setsockopt .
SO_UPDATE_CONNECT_CONTEXT да DWORD (логическое значение) Этот параметр используется с функциями ConnectEx, WSAConnectByList и WSAConnectByName . Этот параметр обновляет свойства сокета после установки подключения. Этот параметр следует задать, если в подключенном сокете должны использоваться функции getpeername, getockname, getockopt, setockopt или shutdown .
SO_USELOOPBACK да да DWORD (логическое значение) Используйте локальный адрес замыкания на себя при отправке данных из этого сокета. Этот параметр следует использовать только в том случае, если все отправленные данные также будут получены локально. Этот параметр не поддерживается поставщиком TCP/IP в Windows. Если этот параметр используется в Windows Vista и более поздних версиях, функции getsockopt и setsockopt завершаются ошибкой WSAEINVAL. В более ранних версиях Windows эти функции завершаются сбоем при использовании WSAENOPROTOOPT.

Поддержка windows для параметров SOL_SOCKET

Параметр Windows 10 Windows 7 Windows Server 2008 Windows Vista Windows Server 2003 Windows XP Windows 2000 Windows NT4 Windows 9x/ME
PVD_CONFIG
SO_ACCEPTCONN x x x x x x x x x
SO_BROADCAST x x x x x x x x x
SO_BSP_STATE x x x x
SO_CONDITIONAL_ACCEPT x x x x x x x
SO_CONNDATA x x x x x x x x
SO_CONNDATALEN x x x x x x x x
SO_CONNECT_TIME x x x x x x x x x
SO_CONNOPT x x x x x x x x
SO_CONNOPTLEN x x x x x x x x
SO_DISCDATA x x x x x x x x
SO_DISCDATALEN x x x x x x x x
SO_DISCOPT x x x x x x x x
SO_DISCOPTLEN x x x x x x x x
SO_DEBUG x x x x x x x x x
SO_DONTLINGER x x x x x x x x x
SO_DONTROUTE x x x x x x x x x
SO_ERROR x x x x x x x x x
SO_EXCLUSIVEADDRUSE x x x x x x x x с пакетом обновления 4 (SP4)
SO_GROUP_ID x x x x
SO_GROUP_PRIORITY x x x x
SO_KEEPALIVE x x x x x x x x x
SO_LINGER x x x x x x x x x
SO_MAX_MSG_SIZE x x x x x x x x x
SO_MAXDG x x x x x x x
SO_MAXPATHDG x x x x x x x
SO_OOBINLINE x x x x x x x x x
SO_OPENTYPE x x x x x x x x x
SO_PORT_SCALABILITY x x x
SO_PROTECT x
SO_PROTOCOL_INFO x x x x x x x x x
SO_PROTOCOL_INFOA x x x x x x x x x
SO_PROTOCOL_INFOW x x x x x x x x x
SO_RCVBUF x x x x x x x x x
SO_RCVLOWAT
SO_RCVTIMEO x x x x x x x x x
SO_RANDOMIZE_PORT x x x x
SO_REUSEADDR x x x x x x x x x
SO_REUSE_UNICASTPORT x
SO_REUSE_MULTICASTPORT x
SO_SNDBUF x x x x x x x x x
SO_SNDLOWAT
SO_SNDTIMEO x x x x x x x x x
SO_TYPE x x x x x x x x x
SO_UPDATE_ACCEPT_CONTEXT x x x x x x x x
SO_UPDATE_CONNECT_CONTEXT x x x x x x
SO_USELOOPBACK

Комментарии

Параметры сокета SOL_SOCKET определены в нескольких файлах заголовков Winsock:

  • Winsock2.h
  • Mswsock.h
  • Ws2def.h

В пакете SDK microsoft Windows, выпущенном для Windows Vista и более поздних версий, организация файлов заголовков изменилась, и уровень SOL_SOCKET определяется в файле заголовка Ws2def.h , который автоматически включается в файл заголовка Winsock2.h . Некоторые параметры сокета SOL_SOCKET определены в файлах заголовков Winsock2.h и Mswsock.h . Остальные параметры сокета SOL_SOCKET определяются в файле заголовка Ws2def.h , который автоматически включается в файл заголовка Winsock2.h . Ws2def.h никогда не следует использовать напрямую.

В пакете SDK платформы, выпущенном для Windows Server 2003 и Windows XP, уровень SOL_SOCKET определяется в файле заголовка Winsock2.h . Параметры сокета SOL_SOCKET определены в файлах заголовков Winsock2.h и Mswsock.h .

Требования

Требование Значение
Заголовок
Winsock2.h;
Mswsock.h;
Ws2def.h (включая Winsock2.h)