Поделиться через


Структура WSADATA (winsock2.h)

Структура WSADATA содержит сведения о реализации сокетов Windows.

Синтаксис

typedef struct WSAData {
  WORD           wVersion;
  WORD           wHighVersion;
#if ...
  unsigned short iMaxSockets;
#if ...
  unsigned short iMaxUdpDg;
#if ...
  char           *lpVendorInfo;
#if ...
  char           szDescription[WSADESCRIPTION_LEN + 1];
#if ...
  char           szSystemStatus[WSASYS_STATUS_LEN + 1];
#else
  char           szDescription[WSADESCRIPTION_LEN + 1];
#endif
#else
  char           szSystemStatus[WSASYS_STATUS_LEN + 1];
#endif
#else
  unsigned short iMaxSockets;
#endif
#else
  unsigned short iMaxUdpDg;
#endif
#else
  char           *lpVendorInfo;
#endif
} WSADATA, *LPWSADATA;

Члены

wVersion

Тип: WORD

Версия спецификации сокетов Windows, которую Ws2_32.dll ожидает использовать вызывающий объект. В байте высокого порядка указывается дополнительный номер версии; Байт нижнего порядка указывает основной номер версии.

wHighVersion

Тип: WORD

Самая высокая версия спецификации сокетов Windows, которую может поддерживать Ws2_32.dll . В байте высокого порядка указывается дополнительный номер версии; Байт нижнего порядка указывает основной номер версии.

Это то же значение, что и член wVersion , если версия, запрашиваемая в параметре wVersionRequested, переданная функции WSAStartup , является самой высокой версией спецификации Windows Sockets, которую может поддерживать Ws2_32.dll .

iMaxSockets

Тип: unsigned short

Максимальное число сокетов, которые могут быть открыты. Этот элемент следует игнорировать для сокетов Windows версии 2 и более поздних версий.

Элемент iMaxSockets сохраняется для совместимости со спецификацией сокетов Windows 1.1, но не должен использоваться при разработке новых приложений. Для всех базовых поставщиков услуг не подходит ни одно значение. Архитектура сокетов Windows изменилась в версии 2 для поддержки нескольких поставщиков, а структура WSADATA больше не применяется к стеку одного поставщика.

iMaxUdpDg

Тип: unsigned short

Максимальный размер сообщения датаграммы. Этот элемент игнорируется для сокетов Windows версии 2 и более поздних версий.

Элемент iMaxUdpDg сохраняется для совместимости со спецификацией сокетов Windows 1.1, но не должен использоваться при разработке новых приложений. Архитектура сокетов Windows изменилась в версии 2 для поддержки нескольких поставщиков, а структура WSADATA больше не применяется к стеку одного поставщика. Для фактического максимального размера сообщения, определенного поставщика и типа сокетов Windows, приложения должны использовать метод getsockopt для получения значения параметра SO_MAX_MSG_SIZE после создания сокета.

lpVendorInfo

Тип: char FAR*

Указатель на сведения о поставщике. Этот элемент следует игнорировать для сокетов Windows версии 2 и более поздних версий.

Элемент lpVendorInfo сохраняется для обеспечения совместимости со спецификацией сокетов Windows 1.1. Архитектура сокетов Windows изменилась в версии 2 для поддержки нескольких поставщиков, а структура WSADATA больше не применяется к стеку одного поставщика. Приложения, нуждающиеся в доступе к сведениям о конфигурации конкретного поставщика, должны использовать метод getsockopt для получения значения PVD_CONFIG параметров для сведений о конкретном поставщике.

szDescription[WSADESCRIPTION_LEN + 1]

Тип: char[WSADESCRIPTION_LEN+1]

Строка ASCII с символом NULL, в которую Ws2_32.dll копирует описание реализации windows Sockets. Текст (до 256 символов в длину) может содержать любые символы, кроме символов управления и форматирования. Наиболее вероятным вариантом использования приложения для этого элемента является отображение его (возможно, усеченного) в сообщении о состоянии.

szSystemStatus[WSASYS_STATUS_LEN + 1]

Тип: char[WSASYS_STATUS_LEN+1]

Строка ASCII с символом NULL, в которую Ws2_32.dll копирует соответствующие сведения о состоянии или конфигурации. Этот параметр следует использовать вWs2_32.dll только в том случае, если информация может быть полезна для пользователя или сотрудников службы поддержки. Этот элемент не следует рассматривать как расширение параметра szDescription .

Комментарии

Функция WSAStartup инициирует использование библиотеки DLL windows Sockets процессом. Функция WSAStartup возвращает указатель на
Структура WSADATA в параметре lpWSAData.

Текущая версия спецификации сокетов Windows, возвращаемая в элементе wHighVersion
Структура WSADATA — это версия 2.2, закодированная с основным номером версии в низкобайтовом и дополнительным номером версии в высоком байте. Эта версия текущей библиотеки DLL Winsock ,Ws2_32.dll, поддерживает приложения, которые запрашивают любую из следующих версий спецификации сокетов Windows:

  • 1,0
  • 1,1
  • 2.0
  • 2.1
  • 2.2
В зависимости от версии, запрашиваемой приложением, один из указанных выше номеров версии — это значение, закодированное как основной номер версии в нижнем байте, а дополнительный номер версии в высоком байте, который возвращается в элементе wVersion структуры WSADATA .
Примечание Приложение должно игнорировать элементы iMaxsockets, iMaxUdpDg и lpVendorInfo в WSADATA , если значение в wVersion после успешного вызова WSAStartup равно не менее 2. Это связано с тем, что архитектура сокетов Windows изменилась в версии 2 для поддержки нескольких поставщиков, и WSADATA больше не применяется к стеку одного поставщика. Появились два новых варианта сокета для предоставления сведений о поставщике: SO_MAX_MSG_SIZE (заменяет элемент iMaxUdpDg ) и PVD_CONFIG (позволяет выполнять любые другие конфигурации, относящиеся к поставщику).
 

Примеры

В следующем примере показано использование структуры WSADATA .

WORD wVersionRequested;
WSADATA wsaData;
int err;
 
wVersionRequested = MAKEWORD( 2, 2 );
 
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
    /* Tell the user that we could not find a usable */
    /* WinSock DLL.                                  */
    return;
}
 
/* Confirm that the WinSock DLL supports 2.2.*/
/* Note that if the DLL supports versions greater    */
/* than 2.2 in addition to 2.2, it will still return */
/* 2.2 in wVersion since that is the version we      */
/* requested.                                        */
 
if ( LOBYTE( wsaData.wVersion ) != 2 ||
        HIBYTE( wsaData.wVersion ) != 2 ) {
    /* Tell the user that we could not find a usable */
    /* WinSock DLL.                                  */
    WSACleanup( );
    return; 
}
 
/* The WinSock DLL is acceptable. Proceed. */




Требования

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Верхняя часть winsock2.h (включая Winsock2.h)

См. также раздел

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

Параметры сокета и IOCTL

WSAStartup

getsockopt