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 CAsyncSocket
abgeleitet 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 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 Connect
auf, 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: