Socket.ReceiveMessageFromAsync(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.
Begint asynchroon het opgegeven aantal bytes aan gegevens te ontvangen op de opgegeven locatie in de gegevensbuffer, met behulp van de opgegeven SocketFlags, en slaat het eindpunt- en pakketgegevens op.
public:
bool ReceiveMessageFromAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool ReceiveMessageFromAsync(System.Net.Sockets.SocketAsyncEventArgs e);
member this.ReceiveMessageFromAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function ReceiveMessageFromAsync (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
De RemoteEndPoint waarde kan niet null zijn.
De Socket is gesloten.
Er is een fout opgetreden bij het openen van de socket.
Opmerkingen
De ReceiveMessageFromAsync methode wordt voornamelijk gebruikt voor het ontvangen van berichtgegevens op een verbindingsloze socket. Het lokale adres van de socket moet bekend zijn. Deze methode kan alleen worden gebruikt met datagram en raw sockets. De socket moet worden geïnitialiseerd met het sockettype dat is ingesteld op Dgram of Raw voordat u deze methode aanroept. Dit kan worden gedaan wanneer de socket wordt samengesteld met behulp van Socket.
De beller moet de SocketAsyncEventArgs.RemoteEndPoint eigenschap instellen op een EndPoint van hetzelfde type als het eindpunt van de externe host. De eigenschap wordt bijgewerkt bij geslaagde ontvangst naar het werkelijke externe eindpunt.
De volgende eigenschappen en gebeurtenissen op het System.Net.Sockets.SocketAsyncEventArgs object zijn vereist om deze methode aan te roepen:
De aanroeper kan de SocketAsyncEventArgs.UserToken eigenschap instellen op een gewenst gebruikersstatusobject voordat de ReceiveMessageFromAsync 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 berichtgeoriënteerde sockets wordt een binnenkomend bericht in de buffer geplaatst tot de totale grootte van de buffer. De SocketAsyncEventArgs.Count en SocketAsyncEventArgs.Offset eigenschappen bepalen waar in de buffer de gegevens worden geplaatst en de hoeveelheid gegevens.
Met ReceiveMessageFromAsync de methode wordt de PacketInformation socket-optie automatisch ingesteld op true de eerste keer dat deze wordt aangeroepen voor een bepaalde Socket. Het IPPacketInformation object is echter alleen geldig voor pakketten die op de lokale computer aankomen nadat de socketoptie is ingesteld. Als een socket pakketten wordt verzonden tussen wanneer de socket is gebonden aan een lokaal eindpunt (expliciet door de methode of impliciet door een van de BindConnect, ConnectAsyncof SendToSendToAsync methoden) en de eerste aanroep naar de ReceiveMessageFromAsync methode, resulteert aanroepen naar ReceiveMessageFromAsync methode in ongeldige IPPacketInformation objecten voor deze pakketten.
Om ervoor te zorgen dat alle IPPacketInformation objecten geldig zijn, moet een toepassing de PacketInformation socketoptietrue instellen op voordat deze is gebonden aan een lokaal eindpunt met behulp van de SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean) methode.
Een toepassing kan de resulterende IPPacketInformation objecten onderzoeken als deze moet weten of het datagram is verzonden met behulp van een unicast-, multicast- of broadcastadres.