Delen via


Windows Sockets: Socketmeldingen

In dit artikel worden de meldingsfuncties in de socketklassen beschreven. Deze lidfuncties zijn callback-functies die door het framework worden aangeroepen om uw socketobject op de hoogte te stellen van belangrijke gebeurtenissen. De meldingsfuncties zijn:

  • OnReceive: hiermee wordt aan deze socket aangegeven dat er gegevens in de buffer staan om deze op te halen door Receive aan te roepen.

  • OnSend: hiermee wordt aan deze socket aangegeven dat deze nu gegevens kan verzenden door Verzenden aan te roepen.

  • OnAccept: hiermee wordt deze listening socket op de hoogte gebracht dat deze in behandeling zijnde verbindingsaanvragen kan accepteren door Accepteren aan te roepen.

  • OnConnect: hiermee wordt deze verbindingssocket op de hoogte gebracht dat de verbindingspoging is voltooid: mogelijk met succes of mogelijk in fout.

  • OnClose: Hiermee wordt aan deze socket aangegeven dat de aansluiting waarmee deze is verbonden, is gesloten.

    Opmerking

    Een extra meldingsfunctie is OnOutOfBandData. Deze melding vertelt de ontvangende socket dat de verzendende socket 'out-of-band'-gegevens bevat die moeten worden verzonden. Out-of-band-gegevens zijn een logisch onafhankelijk kanaal dat is gekoppeld aan elk paar verbonden stroomsockets. Het out-of-band-kanaal wordt meestal gebruikt om 'urgente' gegevens te verzenden. MFC ondersteunt out-of-band-gegevens. Geavanceerde gebruikers die met klasse CAsyncSocket werken, moeten mogelijk het out-of-band-kanaal gebruiken, maar gebruikers van klasse CSocket worden afgeraden om het te gebruiken. De eenvoudigere manier is om een tweede socket te maken voor het doorgeven van dergelijke gegevens. Zie de specificatie van Windows Sockets, beschikbaar in de Windows SDK voor meer informatie over out-of-band-gegevens.

Als u bent afgeleid van klasse CAsyncSocket, moet u de meldingsfuncties overschrijven voor die netwerkgebeurtenissen die van belang zijn voor uw toepassing. Als u een klasse hebt afgeleid van klasse CSocket, is het uw keuze of u de meldingsfuncties van belang wilt overschrijven. U kunt ook CSocket zelf gebruiken, waarbij de meldingsfuncties standaard niets uitvoeren.

Deze functies zijn overschrijfbare callback-functies. CAsyncSocket en CSocket berichten converteren naar meldingen, maar u moet implementeren hoe de meldingsfuncties reageren als u ze wilt gebruiken. De meldingsfuncties worden aangeroepen op het moment dat uw socket op de hoogte wordt gesteld van een interessante gebeurtenis, zoals de aanwezigheid van gegevens die moeten worden gelezen.

MFC roept de meldingsfuncties aan, zodat u het gedrag van uw socket kunt aanpassen op het moment dat deze wordt gewaarschuwd. U kunt bijvoorbeeld aanroepen Receive vanuit uw OnReceive meldingsfunctie, bijvoorbeeld wanneer u een melding ontvangt dat er gegevens zijn die moeten worden gelezen, roept u Receive aan om deze te lezen. Deze aanpak is niet nodig, maar het is een geldig scenario. Als alternatief kunt u de meldingsfunctie gebruiken om de voortgang bij te houden, TRACE-berichten af te drukken, enzovoort.

U kunt van deze meldingen profiteren door de meldingsfuncties in een afgeleide socketklasse te overschrijven en een implementatie te bieden.

Tijdens een bewerking, zoals het ontvangen of verzenden van gegevens, wordt een CSocket object synchroon. Tijdens de synchrone status worden eventuele meldingen die zijn bedoeld voor andere sockets in de wachtrij geplaatst terwijl de huidige socket wacht op de gewenste melding. (Tijdens een Receive oproep wil de socket bijvoorbeeld een melding lezen.) Zodra de socket de synchrone bewerking heeft voltooid en opnieuw asynchroon wordt, kunnen andere sockets beginnen met het ontvangen van de meldingen in de wachtrij.

Opmerking

In CSocketwordt de OnConnect meldingsfunctie nooit aangeroepen. Voor verbindingen roept u Connect aan, die een resultaat zal geven wanneer de verbinding is voltooid (zij het met succes of met een fout). Hoe verbindingsmeldingen worden verwerkt, is een MFC-implementatiedetails.

Zie de functie onder klasse CAsyncSocket in de MFC-verwijzing voor meer informatie over elke meldingsfunctie. Zie MFC-voorbeelden voor broncode en informatie over MFC-voorbeelden.

Voor meer informatie, zie:

Zie ook

Windows Sockets in MFC