Windows Sockets: Ableiten von Socket-Classen

In diesem Artikel werden einige der Funktionen beschrieben, die Sie erhalten 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 eigene Funktionalität hinzuzufügen. Insbesondere stellen diese Klassen eine Reihe von virtuellen Memberfunktionen zur Verfügung, die Sie überschreiben können. Zu diesen Funktionen gehören OnReceive, OnSend, OnAccept, OnConnect und OnClose. Sie können die Funktionen in Ihrer abgeleiteten Socketklasse überschreiben, um die Benachrichtigungen zu nutzen, die sie beim Auftreten von Netzwerkereignissen bereitstellen. Das Framework ruft diese Benachrichtigungsrückruffunktionen auf, um Sie über wichtige Socketereignisse zu informieren, z. B. über 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 überschreibbare Funktion) zur Verfügung. MFC ruft diese Funktion auf, während der Socket Windows-basierte Nachrichten pumpt. Sie können überschreibenOnMessagePending, um nach bestimmten Nachrichten von Windows zu suchen und darauf zu reagieren.

Die in der -Klasse CSocket angegebene Standardversion von OnMessagePending untersucht die Nachrichtenwarteschlange auf WM_PAINT Nachrichten, während auf den Abschluss eines blockierenden Aufrufs gewartet wird. Sie verteilt Farbmeldungen, um die Anzeigequalität zu verbessern. Abgesehen davon, dass Sie etwas Nützliches tun, veranschaulicht dies eine Möglichkeit, wie Sie die Funktion selbst überschreiben können. Ein weiteres Beispiel ist die Verwendung von OnMessagePending für die folgende Aufgabe. Angenommen, Sie zeigen ein dialogfeld ohne Modus an, während Sie auf den Abschluss einer Netzwerktransaktion warten. Das Dialogfeld enthält die Schaltfläche Abbrechen, mit der der Benutzer blockierende Transaktionen abbrechen kann, die zu lange dauern. Ihre OnMessagePending Außerkraftsetzung kann Meldungen im Zusammenhang mit diesem moduslosen Dialogfeld verpumpen.

Geben Sie in ihrer OnMessagePending Überschreibung entweder TRUE oder die Rückgabe von einem Aufruf der Basisklassenversion von OnMessagePendingzurück. Rufen Sie die Basisklassenversion auf, wenn sie Arbeit ausführt, die Sie noch erledigen möchten.

Weitere Informationen finden Sie unter

Weitere Informationen

Windows-Sockets in MFC