Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Socket.SendTo méthode (Byte[], Int32, Int32, SocketFlags, EndPoint)

 

Date de publication : novembre 2016

Envoie le nombre spécifié d’octets de données pour le point de terminaison spécifié, en commençant à l’emplacement spécifié dans la mémoire tampon et à l’aide du SocketFlags.

Espace de noms:   System.Net.Sockets
Assembly:  System (dans System.dll)

public int SendTo(
	byte[] buffer,
	int offset,
	int size,
	SocketFlags socketFlags,
	EndPoint remoteEP
)

Paramètres

buffer
Type: System.Byte[]

Tableau de type Byte qui contient les données à envoyer.

offset
Type: System.Int32

Position dans le tampon de données à partir duquel commencer l’envoi de données.

size
Type: System.Int32

Le nombre d’octets à envoyer.

socketFlags
Type: System.Net.Sockets.SocketFlags

Combinaison d'opérations de bits des valeurs SocketFlags.

remoteEP
Type: System.Net.EndPoint

Le EndPoint qui représente l’emplacement de destination pour les données.

Valeur de retour

Type: System.Int32

Nombre d’octets envoyés.

Exception Condition
ArgumentNullException

buffer a la valeur null.

ou

remoteEP a la valeur null.

ArgumentOutOfRangeException

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 de le offset paramètre.

SocketException

socketFlags n’est pas une combinaison valide de valeurs.

ou

Une erreur de système d’exploitation se produit pendant l’accès à la Socket. Pour plus d'informations, consultez la section Notes.

ObjectDisposedException

Socket a été fermé.

SecurityException

Un appelant dans la pile des appels n’a pas les autorisations requises.

Dans cette surcharge, si vous spécifiez le DontRoute doivent être signalées comme le socketflags paramètre, les données que vous envoyez ne seront pas routés.

Si vous utilisez un protocole sans connexion, vous n’avez pas besoin d’établir un hôte distant par défaut avec la Connect méthode avant d’appeler SendTo. Vous devez uniquement effectuer cette opération si vous avez l’intention d’appeler la Send méthode. Si vous appelez le Connect avant d’appeler la méthode SendTo, le remoteEP paramètre remplacera l’hôte distant par défaut spécifié pour cette opération uniquement d’envoi. Vous ne devez pas également appeler le Bind (méthode), car le fournisseur de services sous-jacent assigne le numéro d’adresse et le port réseau local adapté. Si vous avez besoin identifier le numéro d’adresse et le port désigné du réseau local, vous pouvez utiliser la LocalEndPoint après le SendTo terminée.

Bien que destiné aux protocoles sans connexion, SendTo fonctionne également avec les protocoles orientés connexion. Si vous utilisez un protocole orienté connexion, vous devez tout d’abord établir une connexion d’hôte distant en appelant le Connect méthode ou accepter une demande de connexion entrante à l’aide du Accept (méthode). Si vous n’établissez ou accepter une connexion d’hôte distant, SendTo lèvera une SocketException. Vous pouvez également établir un hôte distant par défaut pour un protocole sans connexion avant d’appeler le SendTo (méthode). Dans ce cas, SendTo ignorera la remoteEP paramètre et uniquement envoyer les données au connectées ou un hôte distant par défaut.

Sockets bloquants se bloquent jusqu'à ce que le nombre d’octets demandés est envoyé. Depuis un non bloquant Socket se termine immédiatement, il peut ne pas envoyer tous les octets demandés en une seule opération. Il est de votre responsabilité d’applications pour suivre le nombre d’octets envoyés et de recommencer l’opération jusqu'à ce que l’application envoie le nombre d’octets demandé. Il n’existe également aucune garantie que les données envoyées apparaîtront sur le réseau immédiatement. 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 est collectée. Une fin correcte de la SendTo méthode signifie que le système sous-jacent a eu suffisamment d’espace tampon envoyer vos données d’un réseau.

Si vous utilisez un protocole sans connexion en mode blocage, SendTo se bloque jusqu'à ce que le datagramme soit envoyé. Si vous souhaitez envoyer des données à une adresse de diffusion, vous devez d’abord appeler le SetSocketOption (méthode) et définir le socket option SocketOptionName.Broadcast. Vous devez également vous assurer de que la taille ne dépasse pas la taille de paquet maximale du fournisseur de service sous-jacent. Si c’est le cas, le datagramme n’enverra pas et SendTo lèvera une SocketException.

System_CAPS_noteRemarque

Si vous recevez un SocketException, utilisez le SocketException.ErrorCode propriété pour obtenir le code d’erreur spécifique. Une fois que vous avez obtenu ce code, reportez-vous à la version de Windows Sockets 2 documentation de code d’erreur API dans la bibliothèque MSDN pour obtenir une description détaillée de l’erreur.

System_CAPS_noteRemarque

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 Traçage réseau dans le .NET Framework.

L’exemple de code suivant envoie un datagramme sans connexion à l’hôte distant spécifié. L’offset, la taille et SocketFlags sont transmises à la SendTo (méthode).

public static void SendTo4()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);

    byte[] msg = Encoding.ASCII.GetBytes("This is a test");
    Console.WriteLine("Sending data.");
    // This call blocks. 
    s.SendTo(msg, 0, msg.Length, SocketFlags.None, endPoint);
    s.Close();
}

.NET Framework
Disponible depuis 1.1
Retour au début
Afficher: