Socket.BeginReceiveFrom Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Démarre la réception asynchrone de données à partir d'un périphérique réseau spécifié.
public:
IAsyncResult ^ BeginReceiveFrom(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginReceiveFrom (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceiveFrom (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, AsyncCallback callback, object state);
member this.BeginReceiveFrom : byte[] * int * int * System.Net.Sockets.SocketFlags * EndPoint * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceiveFrom (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef remoteEP As EndPoint, callback As AsyncCallback, state As Object) As IAsyncResult
Paramètres
- offset
- Int32
Position de base zéro dans le paramètre buffer
à laquelle stocker les données.
- size
- Int32
Nombre d'octets à recevoir.
- socketFlags
- SocketFlags
Combinaison d’opérations de bits des valeurs SocketFlags.
- remoteEP
- EndPoint
Référence à un EndPoint du même type que le point de terminaison de l’hôte distant à mettre à jour lors de la réception synchrone.
- callback
- AsyncCallback
Délégué AsyncCallback.
- state
- Object
Objet qui contient les informations d’état de cette demande.
Retours
IAsyncResult qui fait référence à la lecture asynchrone.
Exceptions
.NET Framework et .NET 5 et versions antérieures uniquement : une erreur s’est produite lors de la tentative d’accès au socket.
offset
est inférieur à 0.
- ou -
offset
est supérieur à la longueur de buffer
.
- ou -
size
est inférieur à 0.
- ou -
size
est supérieur à la longueur de buffer
moins la valeur du paramètre offset
.
Socket a été fermé.
Un appelant situé plus haut dans la pile des appels n’a pas l’autorisation pour l’opération demandée.
Remarques
Important
Il s’agit d’une API de compatibilité. Nous vous déconseillons d’utiliser les méthodes APM (Begin*
et End*
) pour le nouveau développement. Au lieu de cela, utilisez les Task
équivalents basés sur la base.
Vous pouvez passer un rappel qui s’implémente AsyncCallbackBeginReceiveFrom à afin d’être informé de la fin de l’opération. Notez que si la pile réseau sous-jacente termine l’opération de manière synchrone, le rappel sera exécuté en ligne, pendant l’appel à BeginReceiveFrom. Dans ce cas, la CompletedSynchronously propriété sur le retourné IAsyncResult sera définie sur pour true
indiquer que la méthode s’est terminée de manière synchrone. Utilisez la AsyncState propriété de IAsyncResult pour obtenir l’objet d’état passé à la BeginReceiveFrom méthode .
L’opération asynchrone BeginReceiveFrom doit être terminée en appelant la EndReceiveFrom méthode . En règle générale, la méthode est appelée par le AsyncCallback délégué. EndReceiveFrom bloque le thread appelant jusqu’à ce que l’opération soit terminée.
Cette méthode lit les données dans le buffer
paramètre et capture le point de terminaison d’hôte distant à partir duquel les données sont envoyées. Pour plus d’informations sur la façon de récupérer ce point de terminaison, reportez-vous à EndReceiveFrom. Cette méthode est particulièrement utile si vous envisagez de recevoir de manière asynchrone des datagrammes sans connexion à partir d’un hôte inconnu ou de plusieurs hôtes. Dans ce cas, BeginReceiveFrom lit le premier datagramme en file d’attente reçu dans la mémoire tampon du réseau local. Si le datagramme que vous recevez est supérieur à la taille de buffer
, la BeginReceiveFrom méthode remplit buffer
le plus possible le message et lève un SocketException. Si vous utilisez un protocole peu fiable, les données excédentaires seront perdues. Si vous utilisez un protocole fiable, les données excédentaires sont conservées par le fournisseur de services et vous pouvez les récupérer en appelant la BeginReceiveFrom méthode avec une mémoire tampon suffisamment grande.
Pour garantir que le point de terminaison de l’hôte distant est toujours retourné, une application doit lier explicitement le Socket à un point de terminaison local à l’aide de la Bind méthode, puis appeler la SetSocketOption méthode avec le optionLevel
paramètre défini IP sur ou IPv6 , le cas échéant, le optionName
paramètre défini PacketInformationsur , et le optionValue
paramètre pour activer cette option avant d’appeler la BeginReceiveFrom méthode. Sinon, il est possible que le point de terminaison de l’hôte distant ne soit pas retourné lorsque l’expéditeur a envoyé un certain nombre de datagrammes avant que le destinataire ait appelé la BeginReceiveFrom méthode.
Bien que BeginReceiveFrom soit destiné aux protocoles sans connexion, vous pouvez également utiliser un protocole orienté connexion. Si vous choisissez de le faire, vous devez d’abord établir une connexion d’hôte distant en appelant la Connect / BeginConnect méthode ou accepter une demande de connexion entrante en appelant la Accept méthode ou.BeginAccept Si vous appelez la BeginReceiveFrom méthode avant d’établir ou d’accepter une connexion, vous obtiendrez un SocketException. Vous pouvez également établir un hôte distant par défaut pour un protocole sans connexion avant d’appeler la BeginReceiveFrom méthode.
Paramètre remoteEp
Avec les sockets orientés connexion, BeginReceiveFrom lit autant de données que disponible jusqu’au nombre d’octets spécifié par le size
paramètre.
Pour annuler un en attente BeginReceiveFrom, appelez la Close méthode .
Notes
Si vous recevez un SocketException, utilisez la SocketException.ErrorCode propriété pour obtenir le code d’erreur spécifique.
Notes
Ce membre génère des informations de traçage lorsque vous activez le traçage réseau dans votre application. Pour plus d’informations, consultez Suivi réseau dans .NET Framework.
Notes
Le contexte d’exécution (le contexte de sécurité, l’utilisateur usurpé et le contexte appelant) est mis en cache pour les méthodes asynchrones Socket . Après la première utilisation d’un contexte particulier (une méthode asynchrone Socket spécifique, un instance spécifique Socket et un rappel spécifique), les utilisations ultérieures de ce contexte voient une amélioration des performances.