Freigeben über


Windows-Sockets: Hintergrund

In diesem Artikel wird die Art und der Zweck von Windows Sockets erläutert. Der Artikel enthalt auch folgende Informationen:

Die Windows Sockets-Spezifikation definiert eine binärkompatible Netzwerkprogrammierschnittstelle für Microsoft Windows. Windows Sockets basieren auf der UNIX-Sockets-Implementierung in der Berkeley Software Distribution (BSD, Release 4.3) von der University of California in Berkeley. Die Spezifikation enthält sowohl Socketroutinen im BSD-Stil als auch Erweiterungen, die für Windows spezifisch sind. Durch die Verwendung von Windows Sockets kann Ihre Anwendung über jedes Netzwerk kommunizieren, das der Windows Sockets-API entspricht. Unter Win32 bieten Windows-Sockets die Thread-Sicherheit.

Viele Anbieter von Netzwerksoftware unterstützen Windows Sockets unter anderem mit Netzwerkprotokollen wie Transmission Control Protocol/Internet Protocol (TCP/IP), Xerox Network System (XNS), dem DECNet-Protokoll der Digital Equipment Corporation, Internet Packet Exchange/Sequenced Packed Exchange (IPX/SPX) der Novell Corporation und anderen. Obwohl die vorliegende Windows Sockets-Spezifikation die Abstraktion der Sockets für TCP/IP definiert, kann jedes Netzwerkprotokoll Windows Sockets einhalten, indem eine eigene Version der Dynamic Link Library (DLL) bereitgestellt wird, die Windows Sockets implementiert. Beispiele für kommerzielle Anwendungen, die mit Windows Sockets geschrieben wurden, sind X Windows-Server, Terminal-Emulatoren und elektronische E-Mail-Systeme.

Hinweis

Der Zweck von Windows Sockets besteht darin, das zugrunde liegende Netzwerk abstrahieren, sodass Sie nicht über dieses Netzwerk informiert sein müssen und ihre Anwendung auf jedem Netzwerk ausgeführt werden kann, das Sockets unterstützt. Daher wird in dieser Dokumentation nicht über die Details der Netzwerkprotokolle gesprochen.

Die Microsoft Foundation Class Library (MFC) unterstützt die Programmierung mit der Windows Sockets-API, indem zwei Klassen bereitgestellt werden. Eine dieser Klassen CSocketbietet ein hohes Maß an Abstraktion, um ihre Netzwerkkommunikationsprogrammierung zu vereinfachen.

Die Windows Sockets-Spezifikation, Windows Sockets: Eine offene Schnittstelle für Network Computing unter Microsoft Windows, jetzt in Version 1.1, wurde als offener Netzwerkstandard von einer großen Gruppe von Einzelpersonen und Unternehmen in der TCP/IP-Community entwickelt und ist frei zur Nutzung verfügbar. Das Sockets-Programmiermodell unterstützt derzeit eine "Kommunikationsdomäne" mit der Internet Protocol Suite. Die Spezifikation ist im Windows SDK verfügbar.

Tipp

Da Sockets die Internet Protocol Suite verwenden, sind sie die bevorzugte Route für Anwendungen, die die Internetkommunikation auf der "Informationsstraße" unterstützen.

Definition eines Sockets

Ein Socket ist ein Kommunikationsendpunkt – ein Objekt, über das eine Windows Sockets-Anwendung Datenpakete über ein Netzwerk sendet oder empfängt. Ein Socket hat einen Typ und ist einem ausgeführten Prozess zugeordnet, und er hat möglicherweise einen Namen. Derzeit tauschen Sockets daten in der Regel nur mit anderen Sockets in derselben "Kommunikationsdomäne" aus, die die Internet Protocol Suite verwendet.

Beide Arten von Sockets sind bidirektional; es handelt sich um Datenflüsse, die in beide Richtungen gleichzeitig (Vollduplex) kommuniziert werden können.

Es stehen zwei Sockettypen zur Verfügung:

  • Streamsockets

    Stream-Sockets bieten einen Datenfluss ohne Datensatzgrenzen: einen Bytestrom. Datenströme werden garantiert übermittelt, in der richtigen Reihenfolge angeordnet und nicht dupliziert.

  • Datagrammsockets

    Datagrammsockets unterstützen einen Datenfluss nach Datensätzen, der nicht garantiert übermittelt wird und eventuell beim Senden nicht sequenziert wird oder dupliziert sein kann.

"Sequenced" bedeutet, dass Pakete in der gesendeten Reihenfolge geliefert werden. "Unduplicated" bedeutet, dass Sie ein bestimmtes Paket nur einmal erhalten.

Hinweis

Unter einigen Netzwerkprotokollen, z. B. XNS, können Datenströme als Datensätze und nicht als Datenströme von Bytes angeordnet sein. Unter dem gängigeren TCP/IP-Protokoll sind Datenströme jedoch Bytestreams. Windows Sockets stellt eine Abstraktionsebene bereit, die unabhängig vom zugrunde liegenden Protokoll ist.

Informationen zu diesen Typen und welche Art von Socket in welchen Situationen verwendet werden soll, finden Sie unter Windows Sockets: Stream Sockets und Windows Sockets: Datagram Sockets.

Der SOCKET-Datentyp

Jedes MFC-Socketobjekt umfasst ein Handle für ein Windows Socket-Objekt. Der Datentyp dieses Handles ist SOCKET. Ein SOCKET-Handle entspricht dem HWND für ein Fenster. MFC-Socketklassen stellen Operationen für das enthaltene Handle bereit.

Der SOCKET-Datentyp wird im Windows SDK ausführlich beschrieben. Siehe "Socketdatentyp und Fehlerwerte" unter Windows Sockets.

Verwendung für Sockets

Sockets sind in mindestens drei Kommunikationskontexten äußerst nützlich:

  • Client-/Servermodelle.

  • Peer-to-Peer-Szenarien, z. B. Messaginganwendungen.

  • Durchführen von Remoteprozeduraufrufen (RPC), indem die empfangende Anwendung eine Nachricht als Funktionsaufruf interpretiert.

Tipp

Das ideale Argument für die Verwendung von MFC-Sockets ist, wenn Sie beide Enden der Kommunikation schreiben und dabei eine MFC-Bibliothek an beiden Enden verwenden. Weitere Informationen zu diesem Thema, einschließlich dazu, wie Sie den Fall verwalten, wenn Sie mit Nicht-MFC-Anwendungen kommunizieren, finden Sie unter Windows Sockets: Byte-Reihenfolge.

Weitere Informationen finden Sie unter Windows Sockets Specification: ntohs, ntohl, htons, htonl. Weitere Informationen finden Sie in den folgenden Themen:

Siehe auch

Windows Sockets in MFC