Partager via


Socket.EndSend Méthode

Définition

Met fin à un envoi asynchrone en attente.

Surcharges

EndSend(IAsyncResult)

Met fin à un envoi asynchrone en attente.

EndSend(IAsyncResult, SocketError)

Met fin à un envoi asynchrone en attente.

EndSend(IAsyncResult)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Met fin à un envoi asynchrone en attente.

public:
 int EndSend(IAsyncResult ^ asyncResult);
public int EndSend (IAsyncResult asyncResult);
member this.EndSend : IAsyncResult -> int
Public Function EndSend (asyncResult As IAsyncResult) As Integer

Paramètres

asyncResult
IAsyncResult

IAsyncResult stockant les informations d'état de cette demande asynchrone.

Retours

En cas de réussite, nombre d'octets envoyés à Socket ; sinon, erreur de Socket non valide.

Exceptions

asyncResult a la valeur null.

asyncResult n'a pas été retourné par un appel à la méthode BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object).

EndSend(IAsyncResult) a été précédemment appelé pour l'envoi asynchrone.

Une erreur s’est produite pendant la tentative d’accès au socket.

- ou -

.NET 7+ uniquement : a Socket été fermé.

.NET Framework, .NET Core et .NET 5-6 uniquement : a Socket été fermé.

Remarques

Important

Il s’agit d’une API de compatibilité. Nous vous déconseillons d’utiliser les méthodes APM (Begin* et End*) pour un nouveau développement. Utilisez plutôt les Taskéquivalents basés sur .

EndSend termine l’opération démarrée par BeginSend. Vous devez passer le IAsyncResult créé par l’appel correspondant BeginSend .

Si vous utilisez un protocole sans connexion, EndSend se bloque jusqu’à ce que le datagramme soit envoyé. Si vous utilisez un protocole orienté connexion, EndSend se bloque jusqu’à ce qu’une partie de la mémoire tampon ait été envoyée. Si la valeur de retour de EndSend indique que la mémoire tampon n’a pas été complètement envoyée, appelez à nouveau la BeginSend méthode, en modifiant la mémoire tampon pour qu’elle contienne les données non envoyées.

Il n’existe aucune garantie que les données que vous envoyez s’affichent immédiatement sur le réseau. Pour augmenter l’efficacité du réseau, le système sous-jacent peut retarder la transmission jusqu’à ce qu’une quantité importante de données sortantes soit collectée. Une exécution réussie de la BeginSend méthode signifie que le système sous-jacent a eu de l’espace pour mettre en mémoire tampon vos données pour un envoi réseau.

Notes

Si vous recevez un SocketException, utilisez la SocketException.ErrorCode propriété pour obtenir le code d’erreur spécifique.

Notes

Toutes les E/S initiées par un thread donné sont annulées lorsque ce thread se ferme. Une opération asynchrone en attente peut échouer si le thread se ferme avant la fin de l’opération.

Notes

La réussite d’un envoi n’indique pas que les données ont été correctement remises. Si aucun espace de mémoire tampon n’est disponible dans le système de transport pour contenir les données à transmettre, l’envoi se bloque, sauf si le socket a été placé en mode non bloquant.

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.

Voir aussi

S’applique à

EndSend(IAsyncResult, SocketError)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Met fin à un envoi asynchrone en attente.

public:
 int EndSend(IAsyncResult ^ asyncResult, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int EndSend (IAsyncResult asyncResult, out System.Net.Sockets.SocketError errorCode);
member this.EndSend : IAsyncResult * SocketError -> int
Public Function EndSend (asyncResult As IAsyncResult, ByRef errorCode As SocketError) As Integer

Paramètres

asyncResult
IAsyncResult

IAsyncResult stockant les informations d'état de cette demande asynchrone.

errorCode
SocketError

Objet SocketError qui stocke l'erreur de socket.

Retours

En cas de réussite, nombre d'octets envoyés à Socket ; sinon, erreur de Socket non valide.

Exceptions

asyncResult a la valeur null.

asyncResult n'a pas été retourné par un appel à la méthode BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object).

EndSend(IAsyncResult) a été précédemment appelé pour l'envoi asynchrone.

Une erreur s’est produite pendant la tentative d’accès au socket.

- ou -

.NET 7+ uniquement : a Socket été fermé.

.NET Framework, .NET Core et .NET 5-6 uniquement : a Socket été fermé.

Remarques

Important

Il s’agit d’une API de compatibilité. Nous vous déconseillons d’utiliser les méthodes APM (Begin* et End*) pour un nouveau développement. Utilisez plutôt les Taskéquivalents basés sur .

EndSend termine l’opération démarrée par BeginSend. Vous devez passer le IAsyncResult créé par l’appel correspondant BeginSend .

Si vous utilisez un protocole sans connexion, EndSend se bloque jusqu’à ce que le datagramme soit envoyé. Si vous utilisez un protocole orienté connexion, EndSend se bloque jusqu’à ce qu’une partie de la mémoire tampon ait été envoyée. Si la valeur de retour de EndSend indique que la mémoire tampon n’a pas été complètement envoyée, appelez à nouveau la BeginSend méthode, en modifiant la mémoire tampon pour qu’elle contienne les données non envoyées.

Il n’existe aucune garantie que les données que vous envoyez s’affichent immédiatement sur le réseau. Pour augmenter l’efficacité du réseau, le système sous-jacent peut retarder la transmission jusqu’à ce qu’une quantité importante de données sortantes soit collectée. Une exécution réussie de la BeginSend méthode signifie que le système sous-jacent a eu de l’espace pour mettre en mémoire tampon vos données pour un envoi réseau.

Notes

Si vous recevez un SocketException, utilisez la SocketException.ErrorCode propriété pour obtenir le code d’erreur spécifique.

Notes

Toutes les E/S initiées par un thread donné sont annulées lorsque ce thread se ferme. Une opération asynchrone en attente peut échouer si le thread se ferme avant la fin de l’opération.

Notes

La réussite d’un envoi n’indique pas que les données ont été correctement remises. Si aucun espace de mémoire tampon n’est disponible dans le système de transport pour contenir les données à transmettre, l’envoi se bloque, sauf si le socket a été placé en mode non bloquant.

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.

Voir aussi

S’applique à