Freigeben über


Windows Sockets: Socketbenachrichtigungen

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 Überwachungssocket, dass er ausstehende Verbindungsanforderungen annehmen kann, indem "Accept" aufgerufen wird.

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

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

    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 CSocketableiten, ist es Ihre Wahl, ob sie die Benachrichtigungsfunktionen 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 überschreibbare Rückruffunktionen. CAsyncSocket und CSocket konvertieren Sie 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 z. B. von Ihrer OnReceive Benachrichtigungsfunktion aus aufrufenReceive, d. h. bei der Benachrichtigung, dass daten gelesen werden sollen, rufen Receive Sie zum Lesen auf. 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 die Verbindung Connectauf, die beim Abschluss der Verbindung zurückgegeben wird (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