Partager via


Socket.SendTo Méthode

Définition

Envoie les données à un point de terminaison spécifique.

Surcharges

SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)

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

SendTo(Byte[], Int32, SocketFlags, EndPoint)

Envoie le nombre spécifié d'octets de données au point de terminaison spécifié à l'aide du SocketFlags spécifié.

SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)

Envoie des données à un point de terminaison spécifique à l'aide du SocketFlags spécifié.

SendTo(ReadOnlySpan<Byte>, EndPoint)

Envoie les données au point de terminaison spécifié.

SendTo(Byte[], SocketFlags, EndPoint)

Envoie des données à un point de terminaison spécifique à l'aide du SocketFlags spécifié.

SendTo(Byte[], EndPoint)

Envoie les données au point de terminaison spécifié.

SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)

Envoie des données à un point de terminaison spécifique à l'aide du SocketFlags spécifié.

SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)

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

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

public:
 int SendTo(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : byte[] * int * int * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, remoteEP As EndPoint) As Integer

Paramètres

buffer
Byte[]

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

offset
Int32

La position dans le tampon de données par laquelle doit commencer l’envoi des données.

size
Int32

Le nombre d’octets à envoyer.

socketFlags
SocketFlags

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

remoteEP
EndPoint

EndPoint qui représente l'emplacement de destination des données.

Retours

Nombre d’octets envoyés.

Exceptions

buffer a la valeur null.

-ou-

remoteEP a la valeur null.

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.

socketFlags n’est pas une combinaison valide de valeurs.

- ou -

Une erreur du système d’exploitation se produit pendant l’accès au Socket.

Un appelant de la pile des appels ne dispose pas des autorisations requises.

Exemples

L’exemple de code suivant envoie un datagramme sans connexion à l’hôte distant spécifié. Le décalage, la taille et SocketFlags sont passés à la SendTo méthode .

static void SendTo4()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );

   array<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();
}
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();
}
Public Shared Sub SendTo4() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    Dim msg As Byte() = 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()

End Sub

Remarques

Dans cette surcharge, si vous spécifiez l’indicateur DontRoute comme socketflags paramètre, les données que vous envoyez ne seront pas routées.

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 le faire uniquement si vous envisagez d’appeler la Send méthode . Si vous appelez la Connect méthode avant d’appeler SendTo, le remoteEP paramètre remplace l’hôte distant par défaut spécifié pour cette opération d’envoi uniquement. Vous n’êtes pas non plus obligé d’appeler la Bind méthode, car le fournisseur de services sous-jacent attribuera l’adresse de réseau local et le numéro de port les plus appropriés. Si vous devez identifier l’adresse de réseau local et le numéro de port attribués, vous pouvez utiliser la LocalEndPoint propriété une fois la SendTo méthode 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 d’abord établir une connexion d’hôte distant en appelant la Connect méthode ou accepter une demande de connexion entrante à l’aide de la Accept méthode . Si vous n’établissez pas ou n’acceptez pas de connexion d’hôte distant, SendTo lève un SocketException. Vous pouvez également établir un hôte distant par défaut pour un protocole sans connexion avant d’appeler la SendTo méthode . Dans l’un ou l’autre de ces cas, SendTo ignore le remoteEP paramètre et envoie uniquement des données à l’hôte distant connecté ou par défaut.

Les sockets bloquants se bloquent jusqu’à ce que le nombre d’octets demandé soit envoyé. Étant donné qu’une opération non bloquante Socket se termine immédiatement, elle peut ne pas envoyer tous les octets demandés en une seule opération. Il incombe à vos applications de suivre le nombre d’octets envoyés et de réessayer l’opération jusqu’à ce que l’application envoie le nombre d’octets demandé. Il n’y a pas non plus de 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 SendTo 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.

Si vous utilisez un protocole sans connexion en mode bloquant, 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 la SetSocketOption méthode et définir l’option de socket sur SocketOptionName.Broadcast. Vous devez également vous assurer que la taille ne dépasse pas la taille maximale des paquets du fournisseur de services sous-jacent. Si c’est le cas, le datagramme ne sera pas envoyé et SendTo lèvera un SocketException.

Notes

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

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 à

SendTo(Byte[], Int32, SocketFlags, EndPoint)

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

Envoie le nombre spécifié d'octets de données au point de terminaison spécifié à l'aide du SocketFlags spécifié.

public:
 int SendTo(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo (byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : byte[] * int * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As Byte(), size As Integer, socketFlags As SocketFlags, remoteEP As EndPoint) As Integer

Paramètres

buffer
Byte[]

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

size
Int32

Le nombre d’octets à envoyer.

socketFlags
SocketFlags

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

remoteEP
EndPoint

EndPoint qui représente l'emplacement de destination des données.

Retours

Nombre d’octets envoyés.

Exceptions

buffer a la valeur null.

-ou-

remoteEP a la valeur null.

Le size spécifié dépasse la taille de buffer.

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

Exemples

L’exemple de code suivant envoie un datagramme sans connexion à l’hôte distant spécifié. La taille et SocketFlags sont passées à la SendTo méthode .

static void SendTo3()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );

   array<Byte>^ msg = Encoding::ASCII->GetBytes( "This is a test" );
   Console::WriteLine( "Sending data." );
   // This call blocks. 
   s->SendTo( msg, msg->Length, SocketFlags::None, endPoint );
   s->Close();
}
public static void SendTo3()
{
    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, msg.Length, SocketFlags.None, endPoint);
    s.Close();
}
Public Shared Sub SendTo3() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
    Console.WriteLine("Sending data.")
    ' This call blocks. 
    s.SendTo(msg, msg.Length, SocketFlags.None, endPoint)
    s.Close()

End Sub

Remarques

Dans cette surcharge, le décalage de la mémoire tampon est égal par défaut à 0. Si vous spécifiez l’indicateur DontRoute comme socketflags paramètre, les données que vous envoyez ne seront pas routées.

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 le faire uniquement si vous envisagez d’appeler la Send méthode . Si vous appelez la Connect méthode avant d’appeler SendTo, le remoteEP paramètre remplace l’hôte distant par défaut spécifié pour cette opération d’envoi uniquement. Vous n’êtes pas non plus obligé d’appeler la Bind méthode, car le fournisseur de services sous-jacent attribuera l’adresse de réseau local et le numéro de port les plus appropriés. Si vous devez identifier l’adresse de réseau local et le numéro de port attribués, vous pouvez utiliser la LocalEndPoint propriété une fois la SendTo méthode 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 d’abord établir une connexion d’hôte distant en appelant la Connect méthode ou accepter une demande de connexion entrante à l’aide de la Accept méthode . Si vous n’établissez pas ou n’acceptez pas de connexion d’hôte distant, SendTo lève un SocketException. Vous pouvez également établir un hôte distant par défaut pour un protocole sans connexion avant d’appeler la SendTo méthode . Dans l’un ou l’autre de ces cas, SendTo ignore le remoteEP paramètre et envoie uniquement des données à l’hôte distant connecté ou par défaut.

Les sockets bloquants se bloquent jusqu’à ce que le nombre d’octets demandé soit envoyé. Étant donné qu’un non-blocage Socket se termine immédiatement, il se peut qu’il n’envoie pas tous les octets demandés en une seule opération. Il incombe à votre application de suivre le nombre d’octets envoyés et de réessayer l’opération jusqu’à ce que l’application envoie le nombre d’octets demandé. Il n’y a pas non plus de 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 SendTo 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.

Si vous utilisez un protocole sans connexion en mode bloquant, 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 la SetSocketOption méthode et définir l’option de socket sur SocketOptionName.Broadcast. Vous devez également vous assurer que le nombre d’octets envoyés ne dépasse pas la taille maximale des paquets du fournisseur de services sous-jacent. Si c’est le cas, le datagramme ne sera pas envoyé et SendTo lèvera un SocketException.

Notes

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

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 à

SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)

Source:
Socket.cs
Source:
Socket.cs

Envoie des données à un point de terminaison spécifique à l'aide du SocketFlags spécifié.

public:
 int SendTo(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::SocketAddress ^ socketAddress);
public int SendTo (ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.SocketAddress socketAddress);
member this.SendTo : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags * System.Net.SocketAddress -> int
Public Function SendTo (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags, socketAddress As SocketAddress) As Integer

Paramètres

buffer
ReadOnlySpan<Byte>

Étendue d’octets qui contient les données à envoyer.

socketFlags
SocketFlags

Combinaison de bits des valeurs qui seront utilisées lors de SocketFlags l’envoi des données.

socketAddress
SocketAddress

SocketAddress qui représente la destination des données.

Retours

Nombre d’octets envoyés.

Exceptions

socketAddress a la valeur null.

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

S’applique à

SendTo(ReadOnlySpan<Byte>, EndPoint)

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

Envoie les données au point de terminaison spécifié.

public:
 int SendTo(ReadOnlySpan<System::Byte> buffer, System::Net::EndPoint ^ remoteEP);
public int SendTo (ReadOnlySpan<byte> buffer, System.Net.EndPoint remoteEP);
member this.SendTo : ReadOnlySpan<byte> * System.Net.EndPoint -> int
Public Function SendTo (buffer As ReadOnlySpan(Of Byte), remoteEP As EndPoint) As Integer

Paramètres

buffer
ReadOnlySpan<Byte>

Étendue d’octets qui contient les données à envoyer.

remoteEP
EndPoint

EndPoint qui représente la destination des données.

Retours

Nombre d’octets envoyés.

Exceptions

remoteEP a la valeur null.

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

S’applique à

SendTo(Byte[], SocketFlags, EndPoint)

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

Envoie des données à un point de terminaison spécifique à l'aide du SocketFlags spécifié.

public:
 int SendTo(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo (byte[] buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : byte[] * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As Byte(), socketFlags As SocketFlags, remoteEP As EndPoint) As Integer

Paramètres

buffer
Byte[]

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

socketFlags
SocketFlags

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

remoteEP
EndPoint

EndPoint qui représente l'emplacement de destination des données.

Retours

Nombre d’octets envoyés.

Exceptions

buffer a la valeur null.

-ou-

remoteEP a la valeur null.

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

Exemples

L’exemple de code suivant envoie un datagramme sans connexion à l’hôte distant spécifié. SocketFlags sont passés à la SendTo méthode .

static void SendTo2()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );

   array<Byte>^ msg = Encoding::ASCII->GetBytes( "This is a test" );
   Console::WriteLine( "Sending data." );
   // This call blocks. 
   s->SendTo( msg, SocketFlags::None, endPoint );
   s->Close();
}
public static void SendTo2()
{
    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, SocketFlags.None, endPoint);
    s.Close();
}
Public Shared Sub SendTo2() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
    Console.WriteLine("Sending data.")
    ' This call blocks. 
    s.SendTo(msg, SocketFlags.None, endPoint)
    s.Close()

End Sub

Remarques

Dans cette surcharge, le décalage de la mémoire tampon est égal par défaut à 0, et le nombre d’octets à envoyer correspond par défaut à la taille du buffer. Si vous spécifiez l’indicateur DontRoute comme socketflags paramètre, les données que vous envoyez ne seront pas routées.

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 le faire uniquement si vous envisagez d’appeler la Send méthode . Si vous appelez la Connect méthode avant d’appeler SendTo, le remoteEP paramètre remplace l’hôte distant par défaut spécifié pour cette opération d’envoi uniquement. Vous n’êtes pas non plus obligé d’appeler la Bind méthode, car le fournisseur de services sous-jacent attribuera l’adresse de réseau local et le numéro de port les plus appropriés. Si vous devez identifier l’adresse de réseau local et le numéro de port attribués, vous pouvez utiliser la LocalEndPoint propriété une fois la SendTo méthode 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 d’abord établir une connexion d’hôte distant en appelant la Connect méthode ou accepter une demande de connexion entrante à l’aide de la Accept méthode . Si vous n’établissez pas ou n’acceptez pas de connexion d’hôte distant, SendTo lève un SocketException. Vous pouvez également établir un hôte distant par défaut pour un protocole sans connexion avant d’appeler la SendTo méthode . Dans l’un ou l’autre de ces cas, SendTo ignore le remoteEP paramètre et envoie uniquement des données à l’hôte distant connecté ou par défaut.

Les sockets bloquants se bloquent jusqu’à ce que tous les octets demandés dans le buffer soient envoyés. Étant donné qu’un blocage Socket se termine immédiatement, il se peut qu’il n’envoie pas tous les octets dans le buffer. Il est de la responsabilité de votre application de suivre le nombre d’octets envoyés et de réessayer l’opération jusqu’à ce que l’application envoie tous les octets dans le buffer. Il n’y a pas non plus de 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 SendTo 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.

Si vous utilisez un protocole sans connexion en mode bloquant, 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 la SetSocketOption méthode et définir l’option de socket sur SocketOptionName.Broadcast. Vous devez également vous assurer que le nombre d’octets envoyés ne dépasse pas la taille maximale des paquets du fournisseur de services sous-jacent. Si c’est le cas, le datagramme ne sera pas envoyé et SendTo lèvera un SocketException.

Notes

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

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 à

SendTo(Byte[], EndPoint)

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

Envoie les données au point de terminaison spécifié.

public:
 int SendTo(cli::array <System::Byte> ^ buffer, System::Net::EndPoint ^ remoteEP);
public int SendTo (byte[] buffer, System.Net.EndPoint remoteEP);
member this.SendTo : byte[] * System.Net.EndPoint -> int
Public Function SendTo (buffer As Byte(), remoteEP As EndPoint) As Integer

Paramètres

buffer
Byte[]

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

remoteEP
EndPoint

EndPoint qui représente la destination des données.

Retours

Nombre d’octets envoyés.

Exceptions

buffer a la valeur null.

-ou-

remoteEP a la valeur null.

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

Exemples

L’exemple de code suivant envoie un datagramme sans connexion à l’hôte distant spécifié.

static void SendTo1()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );

   array<Byte>^ msg = Encoding::ASCII->GetBytes( "This is a test" );
   Console::WriteLine( "Sending data." );
   // This call blocks. 
   s->SendTo( msg, endPoint );
   s->Close();
}
public static void SendTo1()
{
    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, endPoint);
    s.Close();
}
Public Shared Sub SendTo1() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
    Console.WriteLine("Sending data.")
    ' This call blocks. 
    s.SendTo(msg, endPoint)
    s.Close()

End Sub

Remarques

Dans cette surcharge, le décalage de la mémoire tampon est égal par défaut à 0, le nombre d’octets à envoyer correspond par défaut à la taille du buffer paramètre et la SocketFlags valeur par défaut à 0.

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 le faire uniquement si vous envisagez d’appeler la Send méthode . Si vous appelez la Connect méthode avant d’appeler SendTo, le remoteEP paramètre remplace l’hôte distant par défaut spécifié pour cette opération d’envoi uniquement. Vous n’êtes pas non plus obligé d’appeler la Bind méthode, car le fournisseur de services sous-jacent attribuera l’adresse de réseau local et le numéro de port les plus appropriés. Si vous devez identifier l’adresse de réseau local et le numéro de port attribués, vous pouvez utiliser la LocalEndPoint propriété une fois la SendTo méthode 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 d’abord établir une connexion d’hôte distant en appelant la Connect méthode ou accepter une demande de connexion entrante à l’aide de la Accept méthode . Si vous n’établissez pas ou n’acceptez pas de connexion d’hôte distant, SendTo lève un SocketException. Vous pouvez également établir un hôte distant par défaut pour un protocole sans connexion avant d’appeler la SendTo méthode . Dans l’un ou l’autre de ces cas, SendTo ignore le remoteEP paramètre et envoie uniquement des données à l’hôte distant connecté ou par défaut.

Les sockets bloquants se bloquent jusqu’à ce que tous les octets de la mémoire tampon soient envoyés. Étant donné qu’un blocage Socket se termine immédiatement, il se peut qu’il n’envoie pas tous les octets dans le buffer. Il est de la responsabilité de votre application de suivre le nombre d’octets envoyés et de réessayer l’opération jusqu’à ce que l’application envoie tous les octets dans le buffer. Il n’y a pas non plus de 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 SendTo 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.

Si vous utilisez un protocole sans connexion en mode bloquant, 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 la SetSocketOption méthode et définir l’option de socket sur SocketOptionName.Broadcast. Vous devez également vous assurer que le nombre d’octets envoyés ne dépasse pas la taille maximale des paquets du fournisseur de services sous-jacent. Si c’est le cas, le datagramme ne sera pas envoyé et SendTo lèvera un SocketException.

Notes

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

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 à

SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)

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

Envoie des données à un point de terminaison spécifique à l'aide du SocketFlags spécifié.

public:
 int SendTo(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo (ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags, remoteEP As EndPoint) As Integer

Paramètres

buffer
ReadOnlySpan<Byte>

Étendue d’octets qui contient les données à envoyer.

socketFlags
SocketFlags

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

remoteEP
EndPoint

EndPoint qui représente la destination des données.

Retours

Nombre d’octets envoyés.

Exceptions

remoteEP a la valeur null.

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

S’applique à