Structure WSADATA (winsock.h)
La structure WSADATA contient des informations sur l’implémentation des sockets Windows.
Syntaxe
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;
Membres
wVersion
Type : WORD
Version de la spécification des sockets Windows que le Ws2_32.dll attend de l’appelant. L’octet d’ordre élevé spécifie le numéro de version mineure ; l’octet de faible ordre spécifie le numéro de version principale.
wHighVersion
Type : WORD
Version la plus élevée de la spécification des sockets Windows que le Ws2_32.dll peut prendre en charge. L’octet d’ordre élevé spécifie le numéro de version mineure ; l’octet de faible ordre spécifie le numéro de version principale.
Il s’agit de la même valeur que le membre wVersion lorsque la version demandée dans le paramètre wVersionRequested passé à la fonction WSAStartup est la version la plus élevée de la spécification des sockets Windows que le Ws2_32.dll peut prendre en charge.
iMaxSockets
Type : court non signé
Nombre maximal de sockets pouvant être ouverts. Ce membre doit être ignoré pour les sockets Windows version 2 et ultérieure.
Le membre iMaxSockets est conservé à des fins de compatibilité avec la spécification Windows Sockets 1.1, mais ne doit pas être utilisé lors du développement de nouvelles applications. Aucune valeur unique ne peut être appropriée pour tous les fournisseurs de services sous-jacents. L’architecture des sockets Windows a changé dans la version 2 pour prendre en charge plusieurs fournisseurs, et la structure WSADATA ne s’applique plus à la pile d’un seul fournisseur.
iMaxUdpDg
Type : court non signé
Taille maximale du message de datagramme. Ce membre est ignoré pour les sockets Windows version 2 et versions ultérieures.
Le membre iMaxUdpDg est conservé à des fins de compatibilité avec la spécification 1.1 des sockets Windows, mais ne doit pas être utilisé lors du développement de nouvelles applications. L’architecture des sockets Windows a changé dans la version 2 pour prendre en charge plusieurs fournisseurs, et la structure WSADATA ne s’applique plus à la pile d’un seul fournisseur. Pour la taille de message maximale réelle spécifique à un fournisseur de services et à un type de socket Windows Sockets particulier, les applications doivent utiliser getsockopt pour récupérer la valeur de l’option SO_MAX_MSG_SIZE après la création d’un socket.
lpVendorInfo
Type : char FAR*
Pointeur vers des informations spécifiques au fournisseur. Ce membre doit être ignoré pour les sockets Windows version 2 et ultérieure.
Le membre lpVendorInfo est conservé à des fins de compatibilité avec la spécification Windows Sockets 1.1. L’architecture des sockets Windows a changé dans la version 2 pour prendre en charge plusieurs fournisseurs, et la structure WSADATA ne s’applique plus à la pile d’un seul fournisseur. Les applications qui ont besoin d’accéder aux informations de configuration propres au fournisseur doivent utiliser getsockopt pour récupérer la valeur de l’option PVD_CONFIG d’informations spécifiques au fournisseur.
szDescription[WSADESCRIPTION_LEN + 1]
Type : char[WSADESCRIPTION_LEN+1]
Chaîne ASCII terminée par null dans laquelle le Ws2_32.dll copie une description de l’implémentation des sockets Windows. Le texte (jusqu’à 256 caractères) peut contenir n’importe quel caractère à l’exception des caractères de contrôle et de mise en forme. L’utilisation la plus probable d’une application pour ce membre est de l’afficher (éventuellement tronqué) dans un message status.
szSystemStatus[WSASYS_STATUS_LEN + 1]
Type : char[WSASYS_STATUS_LEN+1]
Chaîne ASCII terminée par null dans laquelle le Ws2_32.dll copie les informations de status ou de configuration pertinentes. Le Ws2_32.dll doit utiliser ce paramètre uniquement si les informations peuvent être utiles à l’utilisateur ou au personnel du support technique. Ce membre ne doit pas être considéré comme une extension du paramètre szDescription .
Remarques
La fonction WSAStartup initie l’utilisation de la DLL de sockets Windows par un processus. La fonction WSAStartup retourne un pointeur vers le
Structure WSADATA dans le paramètre lpWSAData .
Version actuelle de la spécification windows Sockets retournée dans le membre wHighVersion du
La structure WSADATA est encodée dans la version 2.2 avec le numéro de version principale dans l’octet inférieur et le numéro de version secondaire dans l’octet élevé. Cette version de la DLL Winsock actuelle, Ws2_32.dll, prend en charge les applications qui demandent l’une des versions suivantes de la spécification des sockets Windows :
- 1.0
- 1.1
- 2.0
- 2.1
- 2.2
Exemples
L’exemple suivant illustre l’utilisation de la structure 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. */
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
En-tête | winsock.h (inclure Winsock2.h) |