Share via


Windows Sockets: Ableiten von Socket-Classen

In diesem Artikel werden einige der Funktionen beschrieben, die Sie gewinnen können, indem Sie Ihre eigene Klasse von einer der Socketklassen ableiten.

Sie können Ihre eigenen Socketklassen entweder von CAsyncSocket oder CSocket ableiten, um Ihre eigenen Funktionen hinzuzufügen. Insbesondere stellen diese Klassen eine Reihe von virtuellen Memberfunktionen bereit, die Sie überschreiben können. Zu diesen Funktionen gehören OnReceive, OnSend, OnAccept, On Verbinden und OnClose. Sie können die Funktionen in Ihrer abgeleiteten Socketklasse außer Kraft setzen, um die Benachrichtigungen zu nutzen, die beim Auftreten von Netzwerkereignissen bereitgestellt werden. Das Framework ruft diese Benachrichtigungsrückruffunktionen auf, um Sie über wichtige Socketereignisse zu informieren, z. B. den Empfang von Daten, die Sie lesen können. Weitere Informationen zu Benachrichtigungsfunktionen finden Sie unter Windows Sockets: Socketbenachrichtigungen.

Darüber hinaus stellt die Klasse CSocket die OnMessagePending-Memberfunktion (eine erweiterte Außerkraftsetzung) bereit. MFC ruft diese Funktion auf, während der Socket Windows-basierte Nachrichten pumpt. Sie können außer Kraft setzen OnMessagePending , um nach bestimmten Nachrichten von Windows zu suchen und darauf zu reagieren.

Die in der Klasse CSocket angegebene Standardversion OnMessagePending untersucht die Nachrichtenwarteschlange auf WM_PAINT Nachrichten, während sie auf den Abschluss eines blockierten Anrufs warten. Es verteilt Farbenmeldungen, um die Anzeigequalität zu verbessern. Abgesehen davon, etwas Hilfreiches zu tun, veranschaulicht dies eine Möglichkeit, die Funktion selbst außer Kraft zu setzen. Als weiteres Beispiel sollten Sie die Verwendung OnMessagePending für die folgende Aufgabe in Betracht ziehen. Angenommen, Sie zeigen ein dialogfeld ohne Modus an, während Sie warten, bis eine Netzwerktransaktion abgeschlossen ist. Das Dialogfeld enthält eine Schaltfläche "Abbrechen", die der Benutzer zum Abbrechen von Blockierungstransaktionen verwenden kann, die zu lange dauern. Ihre OnMessagePending Außerkraftsetzung kann Nachrichten im Zusammenhang mit diesem Dialogfeld ohne Modus pumpen.

Geben Sie in Der OnMessagePending Außerkraftsetzung entweder TRUE oder die Rückgabe von einem Aufruf an die Basisklassenversion von OnMessagePending. Rufen Sie die Basisklassenversion auf, wenn sie die gewünschten Aufgaben ausführt.

Weitere Informationen finden Sie unter:

Siehe auch

Windows-Sockets in MFC