Freigeben über


Includedateien

Die ursprüngliche Include-Datei für die Verwendung mit Windows Sockets 1.1 war die Winsock.h-Headerdatei. Um das Portieren von vorhandenem Quellcode, der auf Berkeley-UNIX-Sockets basiert, zu Windows-Sockets zu vereinfachen, sollten Windows Sockets-Entwicklungskits für Winsock 1.1 mit mehreren Include-Dateien mit den gleichen Namen wie standardmäßige UNIX-Include-Dateien (z. B. die Headerdateien sys/socket.h und arpa/inet.h) bereitgestellt werden. Diese gleichnamigen Winsock-Headerdateien enthalten jedoch lediglich eine Anweisung, um die Winsock2.h-Headerdatei einzuschließen.

Als Windows Sockets 2 veröffentlicht wurde, wurde die primäre Include-Datei für die Verwendung mit Windows Sockets in Winsock2.h umbenannt. Die ältere ursprüngliche Winsock.h-Headerdatei für Winsock 1.1 wurde ebenfalls für die Kompatibilität mit älteren Anwendungen beibehalten. Die Entwicklung kompatibler Winsock 1.1-Anwendungen ist seit der Veröffentlichung von Windows 2000 veraltet. Alle Anwendungen sollten jetzt die Include-Anweisung Winsock2.h in Quelldateien der Winsock-Anwendung verwenden.

Die Winsock2.h-Headerdatei enthält die meisten Winsock-Funktionen, -Strukturen und -Definitionen. Die Ws2tcpip.h-Headerdatei enthält Definitionen, die im protokollspezifischen Anhangsdokument von WinSock 2 für TCP/IP eingeführt wurden, das neuere Funktionen und Strukturen enthält, die zum Abrufen von IP-Adressen verwendet werden. Dazu gehört die getaddrinfo- und getnameinfo--Funktionsreihe, die eine Namensauflösung für IPv4- oder IPv6-Adressen bereitstellt. Die Ws2tcpip.h-Headerdatei ist nur erforderlich, wenn diese IP-agnostischen Namensfunktionen von der Anwendung benötigt werden.

Die Mswsock.h-Headerdatei enthält Definitionen für Microsoft-spezifische Erweiterungen für Windows Sockets 2 (z. B. TransmitFile, AcceptEx und ConnectEx). Die Mswsock.h-Headerdatei wird normalerweise nicht benötigt, es sei denn, diese Microsoft-spezifischen Erweiterungen werden von der Anwendung verwendet.

Die Winsock2.h-Headerdatei enthält intern Kernelemente aus der Windows.h-Headerdatei. Daher gibt es in Winsock-Anwendungen in der Regel keine #include-Zeile für die Windows.h-Headerdatei. Wenn eine #include-Zeile für die Windows.h-Headerdatei erforderlich ist, sollte dieser das Makro „#define WIN32_LEAN_AND_MEAN“ vorangestellt werden. Aus historischen Gründen enthält der Windows.h-Header standardmäßig die Winsock.h-Headerdatei für Windows Sockets 1.1. Die Deklarationen in der Winsock.h-Headerdatei stehen in Konflikt mit den Deklarationen in der Winsock2-Headerdatei, die von Windows Sockets 2 benötigt werden. Das Makro „WIN32_LEAN_AND_MEAN“ verhindert, dass Winsock.h vom Windows.h-Header eingeschlossen wird. Ein Beispiel, das dies veranschaulicht, ist unten dargestellt.

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

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

int main() {
  return 0;
}

Erstellen einer einfachen Winsock-Anwendung

Erste Schritte mit Winsock

Portieren von Socket-Anwendungen zu Winsock

Überlegungen zur Winsock-Programmierung