Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel werden Datenstromsockets beschrieben, einer der beiden verfügbaren Windows-Sockettypen. (Der andere Typ ist der Datagrammsocket.)
Streamsockets bieten einen Datenfluss ohne Datensatzgrenzen: ein Bytestrom, der bidirektional sein kann (die Anwendung ist vollduplex: sie kann sowohl über den Socket übertragen als auch empfangen werden). Datenströme können verwendet werden, um sequenzierte, nicht duplizierte Daten bereitzustellen. ("Sequenziert" bedeutet, dass Pakete in der gesendeten Reihenfolge übermittelt werden. "Unduplicated" bedeutet, dass Sie ein bestimmtes Paket nur einmal erhalten.) Der Empfang von Datenstromnachrichten ist garantiert, und Datenströme eignen sich gut für die Verarbeitung großer Datenmengen.
Die Netzwerktransportschicht kann Daten in Paketen mit angemessener Größe aufteilen oder gruppieren. Die CSocket Klasse behandelt die Verpackung und Entpackung für Sie.
Datenströme basieren auf expliziten Verbindungen: Socket A fordert eine Verbindung mit Socket B an; Socket B akzeptiert oder lehnt die Verbindungsanforderung ab.
Ein Telefonanruf bietet eine gute Analogie für einen Datenstrom. Unter normalen Umständen hört die empfangende Partei, was Sie in der Reihenfolge sagen, in der Sie sie sagen, ohne Duplizierung oder Verlust. Stream-Sockets eignen sich z. B. für Implementierungen wie das File Transfer Protocol (FTP), das das Übertragen von ASCII- oder Binärdateien beliebiger Größe erleichtert.
Datenstromsockets sind gegenüber Datagrammsockets vorzuziehen, wenn die Daten garantiert ankommen müssen und die Datenmenge groß ist. Weitere Informationen zu Datenstromsockets finden Sie in der Windows Sockets-Spezifikation. Die Spezifikation ist im Windows SDK verfügbar.
Die Verwendung von Stream-Sockets kann Anwendungen, die für die Verwendung eines Datagramm-Sockets zum Senden an alle empfangenden Sockets im Netzwerk konzipiert sind, überlegen sein, weil
Das Übertragungsmodell unterliegt Netzwerküberlastungs- (oder auch 'Sturm'-)problemen.
Das anschließend übernommene Clientservermodell ist effizienter.
Das Datenstrommodell liefert eine zuverlässige Datenübertragung, bei der das Datagrammmodell nicht funktioniert.
Das endgültige Modell nutzt die Möglichkeit, zwischen Unicode- und ANSI-Socketanwendungen zu kommunizieren, die von der Klasse CArchive für die Klasse CSocket vergeben werden.
Hinweis
Wenn Sie die Klasse
CSocketverwenden, müssen Sie einen Datenstrom verwenden. Eine MFC-Assertion schlägt fehl, wenn Sie den Sockettyp als SOCK_DGRAM angeben.