Partager via


Fichiers include

Le fichier include d’origine à utiliser avec Windows Sockets 1.1 était le fichier d’en-tête Winsock.h. Pour faciliter le portage du code source existant basé sur les sockets UNIX Berkeley vers les sockets Windows, il était recommandé de fournir les kits de développement de Windows Sockets pour Winsock 1.1 avec plusieurs fichiers include portant les mêmes noms que les fichiers include UNIX standard (fichiers d’en-tête sys/socket.h et arpa/inet.h, par exemple). Toutefois, ces fichiers d’en-tête Winsock de même nom contenaient simplement une directive pour inclure le fichier d’en-tête Winsock2.h.

Lorsque Windows Sockets 2 a été publié, le fichier include principal à utiliser avec Windows Sockets a été renommé Winsock2.h. L’ancien fichier d’en-tête Winsock.h d’origine pour Winsock 1.1 a également été conservé pour assurer la compatibilité avec les applications plus anciennes. Le développement d’applications compatibles avec Winsock 1.1 est déconseillé depuis la publication de Windows 2000. Toutes les applications doivent maintenant utiliser la directive include Winsock2.h dans les fichiers sources de l’application Winsock.

Le fichier d’en-tête Winsock2.h contient la plupart des fonctions, structures et définitions Winsock. Le fichier d’en-tête Ws2tcpip.h contient des définitions introduites dans le document Annexe propre au protocole TCP/IP pour WinSock 2 qui inclut des fonctions et des structures plus récentes utilisées pour récupérer des adresses IP. Il s’agit notamment de la famille de fonctions getaddrinfo et getnameinfo qui fournissent une résolution de noms pour les adresses IPv4 ou IPv6. Le fichier d’en-tête Ws2tcpip.h est nécessaire uniquement si ces fonctions d’affectation de noms indépendantes des adresses IP sont requises par l’application.

Le fichier d’en-tête Mswsock.h contient les définitions des extensions propres à Microsoft de Windows Sockets 2 (TransmitFile, AcceptEx et ConnectEx, par exemple). Le fichier d’en-tête Mswsock.h n’est normalement pas nécessaire, sauf si ces extensions spécifiques à Microsoft sont utilisées par l’application.

Le fichier d’en-tête Winsock2.h inclut en interne les éléments principaux du fichier d’en-tête Windows.h. Il n’existe donc généralement pas de ligne #include pour le fichier d’en-tête Windows.h dans les applications Winsock. Si une ligne #include est nécessaire pour le fichier d’en-tête Windows.h, elle doit être précédée de la macro #define WIN32_LEAN_AND_MEAN. Pour des raisons historiques, l’en-tête Windows.h est défini par défaut sur l’inclusion du fichier d’en-tête Winsock.h pour Windows Sockets 1.1. Les déclarations du fichier d’en-tête Winsock.h sont en conflit avec celles du fichier d’en-tête Winsock2.h requis par Windows Sockets 2. La macro WIN32_LEAN_AND_MEAN empêche l’inclusion de Winsock.h par l’en-tête Windows.h. Vous en trouverez ci-dessous un exemple d’illustration.

#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>

#pragma comment(lib, "Ws2_32.lib")

int main() {
  return 0;
}

Création d’une application Winsock de base

Prise en main de Winsock

Portage d’applications de socket vers Winsock

Considérations relatives à la programmation de Winsock