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

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

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

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

Note

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

 

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

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

Remarks

Параметры сокета 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 .

Requirements

Requirement Ценность
Заголовок
Winsock2.h;
Mswsock.h;
Ws2def.h (включая Winsock2.h)