Socket.ReceiveAsync(SocketAsyncEventArgs) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt een asynchrone aanvraag gestart om gegevens te ontvangen van een verbonden Socket object.
public:
bool ReceiveAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs e);
member this.ReceiveAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function ReceiveAsync (e As SocketAsyncEventArgs) As Boolean
Parameters
Het SocketAsyncEventArgs object dat moet worden gebruikt voor deze asynchrone socketbewerking.
Retouren
true als de I/O-bewerking in behandeling is. De Completed gebeurtenis voor de e parameter wordt gegenereerd na voltooiing van de bewerking.
false als de I/O-bewerking synchroon is voltooid. In dit geval wordt de Completed gebeurtenis voor de e parameter niet gegenereerd en kan het e object dat als parameter wordt doorgegeven, direct worden onderzocht nadat de methodeaanroep terugkeert om het resultaat van de bewerking op te halen.
Uitzonderingen
Een argument is ongeldig. De Buffer of BufferList eigenschappen van de e parameter moeten verwijzen naar geldige buffers. Een of de andere van deze eigenschappen kan worden ingesteld, maar niet beide tegelijk.
Er is al een socketbewerking uitgevoerd met behulp van het SocketAsyncEventArgs object dat is opgegeven in de e parameter.
De Socket is gesloten.
Er is een fout opgetreden bij het openen van de socket.
Opmerkingen
De ReceiveAsync methode wordt gebruikt voor verbonden sockets of gebonden verbindingsloze sockets en wordt gebruikt om binnenkomende gegevens te lezen. Het lokale adres van de socket moet bekend zijn.
Voor gebonden verbindingsloze sockets beperkt deze functie de adressen van waaruit ontvangen berichten worden geaccepteerd. De functie retourneert alleen berichten van het externe adres dat is opgegeven in de verbinding. Berichten van andere adressen worden op de achtergrond verwijderd.
De SocketAsyncEventArgs.SocketFlags eigenschap op de e parameter biedt de Window Sockets-serviceprovider aanvullende informatie over de leesaanvraag. Zie voor meer informatie over het gebruik van deze parameter System.Net.Sockets.SocketFlags.
De volgende eigenschappen en gebeurtenissen op het System.Net.Sockets.SocketAsyncEventArgs object zijn vereist om deze methode aan te roepen:
SocketAsyncEventArgs.Buffer of SocketAsyncEventArgs.BufferList
SocketAsyncEventArgs.Count als SocketAsyncEventArgs.Buffer is ingesteld
SocketAsyncEventArgs.Offset als SocketAsyncEventArgs.Buffer is ingesteld
De aanroeper kan de SocketAsyncEventArgs.UserToken eigenschap instellen op een gewenst gebruikersstatusobject voordat de ReceiveAsync methode wordt aangeroepen, zodat de gegevens kunnen worden opgehaald in de callback-methode. Als de callback meer informatie nodig heeft dan één object, kan er een kleine klasse worden gemaakt om de andere vereiste statusgegevens als leden te bewaren.
Voor bytestroomsockets worden binnenkomende gegevens in de buffer geplaatst totdat de buffer is gevuld, de verbinding wordt gesloten of de intern gebufferde gegevens uitgeput zijn.
Voor berichtgeoriënteerde sockets wordt een binnenkomend bericht in de buffer geplaatst tot de totale grootte van de buffer die aan de e parameter is gekoppeld. Als het bericht groter is dan de buffer, wordt de buffer gevuld met het eerste deel van het bericht.
Voor verbindingsgeoriënteerde sockets kan de ReceiveAsync methode op een van de twee manieren aangeven of de socket bytestroom of berichtgeoriënteerd is. Voor bytestreams geeft nul bytes aan dat er geen bytes meer zijn gelezen en dat er nooit meer bytes worden gelezen. Voor berichtgeoriënteerde sockets, waarbij een nul-bytebericht vaak toegestaan is, wordt een SocketException met de SocketAsyncEventArgs.SocketError set ingesteld op de systeemeigen Winsock WSAEDISCON-foutcode (10101) gebruikt om aan te geven dat de systeemeigen Winsock WSAEDISCON-foutcode (10101) correct wordt gesloten. In elk geval geeft een SocketException met de SocketAsyncEventArgs.SocketError set aan de systeemeigen Winsock WSAECONNRESET-foutcode (10054) aan dat er een afgebroken sluiting is opgetreden.