Windows Sockets: Socketbenachrichtigungen

In diesem Artikel werden die Benachrichtigungsfunktionen in den Socketklassen beschrieben. Diese Memberfunktionen sind Rückruffunktionen, die das Framework aufruft, um Ihr Socketobjekt über wichtige Ereignisse zu benachrichtigen. Die Benachrichtigungsfunktionen sind:

  • OnReceive: Benachrichtigt diesen Socket, dass daten im Puffer vorhanden sind, damit er durch Aufrufen von Empfangen abgerufen werden kann.

  • OnSend: Benachrichtigt diesen Socket, dass er jetzt Daten senden kann, indem er Send aufruft.

  • OnAccept: Benachrichtigt diesen Überwachungs socket, dass er ausstehende Verbindungsanforderungen annehmen kann, indem er "Accept" aufruft.

  • OnConnect: Benachrichtigt diesen Verbindungssocket, dass der Verbindungsversuch abgeschlossen wurde: vielleicht erfolgreich oder möglicherweise in Fehler.

  • OnClose: Benachrichtigt diesen Socket, dass der Socket, mit dem er verbunden ist, geschlossen wurde.

    Hinweis

    Eine zusätzliche Benachrichtigungsfunktion ist OnOutOfBandData. Diese Benachrichtigung teilt dem empfangenden Socket mit, dass der Sende socket über "Out-of-Band"-Daten verfügt, die gesendet werden sollen. Out-of-Band-Daten sind ein logisch unabhängiger Kanal, der jedem paar verbundenen Stream-Sockets zugeordnet ist. Der Out-of-Band-Kanal wird in der Regel verwendet, um "dringende" Daten zu senden. MFC unterstützt Out-of-Band-Daten. Erweiterte Benutzer, die mit CAsyncSocket arbeiten, müssen möglicherweise den Out-of-Band-Kanal verwenden, aber Benutzer von Klassen-CSocket werden davon abgeraten, es zu verwenden. Die einfachere Möglichkeit besteht darin, einen zweiten Socket zum Übergeben solcher Daten zu erstellen. Weitere Informationen zu Out-of-Band-Daten finden Sie in der Windows Sockets-Spezifikation, die im Windows SDK verfügbar ist.

Wenn Sie von der Klasse CAsyncSocketabgeleitet werden, müssen Sie die Benachrichtigungsfunktionen für diese Netzwerkereignisse außer Kraft setzen, die für Ihre Anwendung von Interesse sind. Wenn Sie eine Klasse von der Klasse CSocketableiten, ist es Ihre Wahl, ob sie die Benachrichtigungsfunktionen von Interesse außer Kraft setzen soll. Sie können sich auch selbst verwenden CSocket , in diesem Fall werden die Benachrichtigungsfunktionen standardmäßig nicht ausgeführt.

Diese Funktionen sind überschriebene Rückruffunktionen. CAsyncSocket und CSocket konvertieren Sie Nachrichten in Benachrichtigungen, müssen jedoch implementieren, wie die Benachrichtigungsfunktionen reagieren, wenn Sie sie verwenden möchten. Die Benachrichtigungsfunktionen werden zum Zeitpunkt aufgerufen, zu dem Ihr Socket über ein Ereignis von Interesse benachrichtigt wird, z. B. das Vorhandensein von zu lesenden Daten.

MFC ruft die Benachrichtigungsfunktionen auf, damit Sie das Verhalten Ihres Sockets zum Zeitpunkt der Benachrichtigung anpassen können. Sie können z. B. von Ihrer OnReceive Benachrichtigungsfunktion aufrufenReceive, also wenn Sie benachrichtigt werden, dass Daten gelesen werden sollen, Receive um sie zu lesen. Dieser Ansatz ist nicht erforderlich, aber es ist ein gültiges Szenario. Alternativ können Sie Ihre Benachrichtigungsfunktion verwenden, um den Fortschritt zu verfolgen, TRACE-Nachrichten zu drucken usw.

Sie können diese Benachrichtigungen nutzen, indem Sie die Benachrichtigungsfunktionen in einer abgeleiteten Socketklasse außer Kraft setzen und eine Implementierung bereitstellen.

Während eines Vorgangs, z. B. Empfangen oder Senden von Daten, wird ein CSocket Objekt synchron. Während des synchronen Zustands werden alle für andere Sockets vorgesehenen Benachrichtigungen in die Warteschlange gestellt, während der aktuelle Socket auf die gewünschte Benachrichtigung wartet. (Beispielsweise möchte der Socket während eines Anrufs Receive eine Benachrichtigung lesen.) Sobald der Socket seinen synchronen Vorgang abgeschlossen hat und erneut asynchron wird, können andere Sockets mit dem Empfangen der in die Warteschlange stehenden Benachrichtigungen beginnen.

Hinweis

In CSocket, die OnConnect Benachrichtigungsfunktion wird nie aufgerufen. Bei Verbindungen rufen Sie die Verbindung auf Connect, die zurückgegeben wird, wenn die Verbindung abgeschlossen ist (entweder erfolgreich oder fehler). Wie Verbindungsbenachrichtigungen behandelt werden, ist ein MFC-Implementierungsdetails.

Ausführliche Informationen zu jeder Benachrichtigungsfunktion finden Sie in der Funktion unter der Klasse CAsyncSocket in der MFC-Referenz. Informationen zu MFC-Beispielen finden Sie unter MFC-Beispiele.

Weitere Informationen finden Sie unter:

Siehe auch

Windows-Sockets in MFC