Freigeben über


Windows Sockets: Socketbenachrichtigungen

Hinweis

Die Microsoft Foundation Classes (MFC)-Bibliothek wird weiterhin unterstützt. Wir fügen jedoch keine Features mehr hinzu oder aktualisieren die Dokumentation.

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

  • OnReceive: Benachrichtigt diesen Socket darüber, dass der Puffer Daten enthält, die durch Aufrufen von Receive abgerufen werden.

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

  • OnAccept: Benachrichtigt diesen Abhörsocket, dass er ausstehende Verbindungsanforderungen annehmen kann, indem Accept aufgerufen wird.

  • OnConnect: Benachrichtigt diesen Verbindungssocket darüber, dass der Verbindungsversuch abgeschlossen wurde: möglicherweise erfolgreich oder möglicherweise fehlerhaft.

  • OnClose: Meldet diesem Socket, dass der Socket, mit dem er verbunden ist, geschlossen ist.

    Hinweis

    Eine zusätzliche Benachrichtigungsfunktion ist OnOutOfBandData. Diese Benachrichtigung teilt dem empfangenden Socket mit, dass der sendende 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 verbundener Datenstromsockets 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 CSocket der Klasse 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 sind, 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 CSocket ableiten, ist es Ihre Wahl, ob Sie die Benachrichtigungsfunktionen außer Kraft setzen sollen. Sie können CSocket auch selbst verwenden; in diesem Fall tun die Benachrichtigungsfunktionen standardmäßig nichts.

Diese Funktionen sind überschreibbare Callback-Funktionen. CAsyncSocket und CSocket konvertieren Nachrichten in Benachrichtigungen, aber Sie müssen implementieren, wie die Benachrichtigungsfunktionen reagieren, wenn Sie sie verwenden möchten. Die Benachrichtigungsfunktionen werden zum Zeitpunkt aufgerufen, zu dem Ihr Socket über ein interessantes Ereignis 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 beispielsweise Receive von Ihrer OnReceive Benachrichtigungsfunktion aus aufrufen, wenn Sie benachrichtigt werden, dass Daten zum Lesen bereitstehen, rufen Sie Receive auf, 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 nachzuverfolgen, 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 wie dem 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 Receive Anrufs eine Benachrichtigung lesen.) Sobald der Socket seinen synchronen Vorgang abgeschlossen hat und erneut asynchron wird, können andere Sockets mit dem Empfang der in die Warteschlange eingereihten Benachrichtigungen beginnen.

Hinweis

In CSocket, die OnConnect Benachrichtigungsfunktion wird nie aufgerufen. Bei Verbindungen rufen Sie Connect an, die zurückgegeben wird, sobald die Verbindung abgeschlossen ist (entweder erfolgreich oder fehlerhaft). 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. Quellcode und Informationen zu MFC-Beispielen finden Sie unter MFC-Beispiele.

Weitere Informationen finden Sie unter:

Siehe auch

Windows Sockets in MFC