Параметры сокета 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 .
Требования
Требование | Значение |
---|---|
Заголовок |
|