Socket.Send 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.
Envoie des données à un Socket connecté.
Surcharges
Send(ReadOnlySpan<Byte>, SocketFlags, SocketError) |
Envoie des données à un Socket connecté à l'aide du SocketFlags spécifié. |
Send(ReadOnlySpan<Byte>) |
Envoie des données à un Socket connecté. |
Send(Byte[], Int32, Int32, SocketFlags, SocketError) |
Envoie le nombre spécifié d’octets de données à un Socket connecté, à part de l’offset spécifié et avec le SocketFlags spécifié. |
Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError) |
Envoie le jeu de mémoires tampon dans la liste à un Socket connecté, à l'aide du SocketFlags spécifié. |
Send(Byte[], Int32, Int32, SocketFlags) |
Envoie le nombre spécifié d’octets de données à un Socket connecté, à part de l’offset spécifié et avec le SocketFlags spécifié. |
Send(Byte[], Int32, SocketFlags) |
Reçoit le nombre spécifié d'octets de données à un Socket connecté, à l'aide du SocketFlags spécifié. |
Send(IList<ArraySegment<Byte>>) |
Envoie le jeu de mémoires tampon dans la liste à un Socket connecté. |
Send(IList<ArraySegment<Byte>>, SocketFlags) |
Envoie le jeu de mémoires tampon dans la liste à un Socket connecté, à l'aide du SocketFlags spécifié. |
Send(Byte[], SocketFlags) |
Envoie des données à un Socket connecté à l'aide du SocketFlags spécifié. |
Send(ReadOnlySpan<Byte>, SocketFlags) |
Envoie des données à un Socket connecté à l'aide du SocketFlags spécifié. |
Send(Byte[]) |
Envoie des données à un Socket connecté. |
Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envoie des données à un Socket connecté à l'aide du SocketFlags spécifié.
public:
int Send(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Send (ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Send : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Send (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer
Paramètres
- buffer
- ReadOnlySpan<Byte>
Étendue d’octets qui contient les données à envoyer.
- socketFlags
- SocketFlags
Combinaison de bits des valeurs d’énumération qui spécifie les comportements d’envoi et de réception.
- errorCode
- SocketError
Lorsque cette méthode est retournée, contient l’une des valeurs d’énumération qui définit les codes d’erreur pour le socket.
Retours
Le nombre d’octets envoyés au Socket.
Exceptions
Une erreur s’est produite pendant la tentative d’accès au socket.
Socket a été fermé.
Remarques
Send envoie de manière synchrone des données à l’hôte distant spécifié dans la Connect méthode ou Accept et retourne le nombre d’octets correctement envoyés. Send peut être utilisé à la fois pour les protocoles orientés connexion et sans connexion.
Cette surcharge nécessite une mémoire tampon qui contient les données que vous souhaitez envoyer. La SocketFlags valeur par défaut est 0, le décalage de mémoire tampon par défaut est égal à 0 et le nombre d’octets à envoyer par défaut à la taille de la mémoire tampon.
Si vous utilisez un protocole sans connexion, vous devez appeler Connect avant d’appeler cette méthode ou Send lever un SocketException. Si vous utilisez un protocole orienté connexion, vous devez utiliser Connect pour établir une connexion d’hôte distant ou utiliser Accept pour accepter une connexion entrante.
Si vous utilisez un protocole sans connexion et envisagez d’envoyer des données à plusieurs hôtes différents, vous devez utiliser la SendTo méthode . Si vous n’utilisez pas la SendTo méthode, vous devez appeler Connect avant chaque appel à Send. Vous pouvez utiliser SendTo même après avoir établi un hôte distant par défaut avec Connect. Vous pouvez également modifier l’hôte distant par défaut avant d’appeler Send en effectuant un autre appel à Connect.
Si vous utilisez un protocole orienté connexion, Send bloque jusqu’à ce que tous les octets de la mémoire tampon soient envoyés, sauf si un délai d’attente a été défini à l’aide Socket.SendTimeoutde . Si la valeur du délai d’attente a été dépassée, l’appel Send lève un SocketException. En mode sans blocage, Send peut se terminer correctement, même s’il envoie moins que le nombre d’octets dans la mémoire tampon. 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 les octets dans la mémoire tampon. Il n’est pas non plus garanti 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é significative de données sortantes soit collectée. Une exécution réussie de la Send méthode signifie que le système sous-jacent a eu de la place 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. 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.
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.
Important
La réussite d’un envoi n’indique pas que les données ont été correctement livrées. Si aucun espace tampon n’est disponible dans le système de transport pour contenir les données à transmettre, l’envoi est bloqué, sauf si le socket a été placé en mode non bloquant.
Voir aussi
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
S’applique à
Send(ReadOnlySpan<Byte>)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envoie des données à un Socket connecté.
public:
int Send(ReadOnlySpan<System::Byte> buffer);
public int Send (ReadOnlySpan<byte> buffer);
member this.Send : ReadOnlySpan<byte> -> int
Public Function Send (buffer As ReadOnlySpan(Of Byte)) As Integer
Paramètres
- buffer
- ReadOnlySpan<Byte>
Étendue d’octets qui contient les données à envoyer.
Retours
Le nombre d’octets envoyés au Socket.
Exceptions
Une erreur s’est produite pendant la tentative d’accès au socket.
Socket a été fermé.
Remarques
Send envoie de manière synchrone des données à l’hôte distant spécifié dans la Connect méthode ou Accept et retourne le nombre d’octets correctement envoyés. Send peut être utilisé à la fois pour les protocoles orientés connexion et sans connexion.
Cette surcharge nécessite une mémoire tampon qui contient les données que vous souhaitez envoyer. La SocketFlags valeur par défaut est 0, le décalage de mémoire tampon par défaut est égal à 0 et le nombre d’octets à envoyer par défaut à la taille de la mémoire tampon.
Si vous utilisez un protocole sans connexion, vous devez appeler Connect avant d’appeler cette méthode ou Send lever un SocketException. Si vous utilisez un protocole orienté connexion, vous devez utiliser Connect pour établir une connexion d’hôte distant ou utiliser Accept pour accepter une connexion entrante.
Si vous utilisez un protocole sans connexion et envisagez d’envoyer des données à plusieurs hôtes différents, vous devez utiliser la SendTo méthode . Si vous n’utilisez pas la SendTo méthode, vous devez appeler Connect avant chaque appel à Send. Vous pouvez utiliser SendTo même après avoir établi un hôte distant par défaut avec Connect. Vous pouvez également modifier l’hôte distant par défaut avant d’appeler Send en effectuant un autre appel à Connect.
Si vous utilisez un protocole orienté connexion, Send bloque jusqu’à ce que tous les octets de la mémoire tampon soient envoyés, sauf si un délai d’attente a été défini à l’aide Socket.SendTimeoutde . Si la valeur du délai d’attente a été dépassée, l’appel Send lève un SocketException. En mode sans blocage, Send peut se terminer correctement, même s’il envoie moins que le nombre d’octets dans la mémoire tampon. 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 les octets dans la mémoire tampon. Il n’est pas non plus garanti 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é significative de données sortantes soit collectée. Une exécution réussie de la Send méthode signifie que le système sous-jacent a eu de la place 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. 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.
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.
Important
La réussite d’un envoi n’indique pas que les données ont été correctement livrées. Si aucun espace tampon n’est disponible dans le système de transport pour contenir les données à transmettre, l’envoi est bloqué, sauf si le socket a été placé en mode non bloquant.
Voir aussi
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
S’applique à
Send(Byte[], Int32, Int32, SocketFlags, SocketError)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envoie le nombre spécifié d’octets de données à un Socket connecté, à part de l’offset spécifié et avec le SocketFlags spécifié.
public:
int Send(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Send (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Send : byte[] * int * int * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Send (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer
Paramètres
- 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.
- errorCode
- SocketError
Objet SocketError qui stocke l'erreur de socket.
Retours
Le nombre d’octets envoyés au Socket.
Exceptions
buffer
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.
Socket a été fermé.
Exemples
L’exemple de code suivant spécifie la mémoire tampon de données, un décalage, une taille et SocketFlags pour l’envoi de données à un connecté Socket.
// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
int SendReceiveTest4( Socket^ server )
{
array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
array<Byte>^ bytes = gcnew array<Byte>(256);
try
{
// Blocks until send returns.
int byteCount = server->Send( msg, 0, msg->Length, SocketFlags::None );
Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
// Get reply from the server.
byteCount = server->Receive( bytes, 0, server->Available,
SocketFlags::None );
if ( byteCount > 0 )
{
Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
}
}
catch ( SocketException^ e )
{
Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
return (e->ErrorCode);
}
return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
public static int SendReceiveTest4(Socket server)
{
byte[] msg = Encoding.UTF8.GetBytes("This is a test");
byte[] bytes = new byte[256];
try
{
// Blocks until send returns.
int byteCount = server.Send(msg, 0, msg.Length, SocketFlags.None);
Console.WriteLine("Sent {0} bytes.", byteCount);
// Get reply from the server.
byteCount = server.Receive(bytes, 0, bytes.Length, SocketFlags.None);
if (byteCount > 0)
Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
}
catch (SocketException e)
{
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
return (e.ErrorCode);
}
return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, offset, message size, and socket flags.
Public Shared Function SendReceiveTest4(ByVal server As Socket) As Integer
Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
Dim bytes(255) As Byte
Try
' Blocks until send returns.
Dim byteCount As Integer = server.Send(msg, 0, msg.Length, SocketFlags.None)
Console.WriteLine("Sent {0} bytes.", byteCount)
' Get reply from the server.
byteCount = server.Receive(bytes, 0, server.Available, SocketFlags.None)
If byteCount > 0 Then
Console.WriteLine(Encoding.UTF8.GetString(bytes))
End If
Catch e As SocketException
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
Return e.ErrorCode
End Try
Return 0
End Function 'SendReceiveTest4
Remarques
Send envoie de manière synchrone des données à l’hôte distant spécifié dans la Connect méthode ou Accept et retourne le nombre d’octets correctement envoyés. Send peut être utilisé pour les protocoles orientés connexion et sans connexion.
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 devez appeler Connect avant d’appeler cette méthode ou Send lever un SocketException. Si vous utilisez un protocole orienté connexion, vous devez utiliser Connect pour établir une connexion hôte distante ou utiliser Accept pour accepter une connexion entrante.
Si vous utilisez un protocole sans connexion et que vous envisagez d’envoyer des données à plusieurs hôtes différents, vous devez utiliser SendTo. Si vous n’utilisez SendTopas , vous devrez appeler Connect avant chaque appel à Send. Il est possible d’utiliser SendTo même après avoir établi un hôte distant par défaut avec Connect. Vous pouvez également modifier l’hôte distant par défaut avant d’appeler Send en effectuant un autre appel à Connect.
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 Send lèvera un SocketException.
Si vous utilisez un protocole orienté connexion, Send se bloque jusqu’à ce que le nombre d’octets demandé soit envoyé, sauf si un délai d’attente a été défini à l’aide Socket.SendTimeoutde . Si la valeur du délai d’attente a été dépassée, l’appel Send lève un SocketException. En mode sans blocage, Send peut se terminer avec succès même s’il envoie moins que le nombre d’octets que vous demandez. 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 Send 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. 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
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
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
S’applique à
Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envoie le jeu de mémoires tampon dans la liste à un Socket connecté, à l'aide du SocketFlags spécifié.
public:
int Send(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Send (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Send : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Send (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer
Paramètres
- buffers
- IList<ArraySegment<Byte>>
Liste de ArraySegment<T> de type Byte qui contient les données à envoyer.
- socketFlags
- SocketFlags
Combinaison d’opérations de bits des valeurs SocketFlags.
- errorCode
- SocketError
Objet SocketError qui stocke l'erreur de socket.
Retours
Le nombre d’octets envoyés au Socket.
Exceptions
buffers
a la valeur null
.
buffers
est vide.
Une erreur s’est produite pendant la tentative d’accès au socket.
Socket a été fermé.
Remarques
Cette surcharge nécessite au moins une mémoire tampon qui contient les données que vous souhaitez envoyer. La SocketFlags valeur par défaut est 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 devez appeler Connect avant d’appeler cette méthode, ou Send lève un SocketException. Si vous utilisez un protocole orienté connexion, vous devez utiliser Connect pour établir une connexion hôte distante ou utiliser Accept pour accepter une connexion entrante.
Si vous utilisez un protocole sans connexion et que vous envisagez d’envoyer des données à plusieurs hôtes différents, vous devez utiliser la SendTo méthode . Si vous n’utilisez pas la SendTo méthode , vous devrez appeler Connect avant chaque appel à Send. Vous pouvez utiliser SendTo même après avoir établi un hôte distant par défaut avec Connect. Vous pouvez également modifier l’hôte distant par défaut avant d’appeler Send en effectuant un autre appel à Connect.
Si vous utilisez un protocole orienté connexion, Send se bloque jusqu’à ce que tous les octets de la mémoire tampon soient envoyés, sauf si un délai d’attente a été défini à l’aide Socket.SendTimeoutde . Si la valeur du délai d’attente a été dépassée, l’appel Send lève un SocketException. En mode non bloquant, Send peut se terminer correctement même s’il envoie moins que le nombre d’octets dans la mémoire tampon. 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 les octets dans la mémoire tampon. 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 Send 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. 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
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.
S’applique à
Send(Byte[], Int32, Int32, SocketFlags)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envoie le nombre spécifié d’octets de données à un Socket connecté, à part de l’offset spécifié et avec le SocketFlags spécifié.
public:
int Send(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Send (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : byte[] * int * int * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags) As Integer
Paramètres
- 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.
Retours
Le nombre d’octets envoyés au Socket.
Exceptions
buffer
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.
Socket a été fermé.
Exemples
L’exemple de code suivant spécifie la mémoire tampon de données, un décalage, une taille et SocketFlags pour l’envoi de données à un connecté Socket.
// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
int SendReceiveTest4( Socket^ server )
{
array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
array<Byte>^ bytes = gcnew array<Byte>(256);
try
{
// Blocks until send returns.
int byteCount = server->Send( msg, 0, msg->Length, SocketFlags::None );
Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
// Get reply from the server.
byteCount = server->Receive( bytes, 0, server->Available,
SocketFlags::None );
if ( byteCount > 0 )
{
Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
}
}
catch ( SocketException^ e )
{
Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
return (e->ErrorCode);
}
return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
public static int SendReceiveTest4(Socket server)
{
byte[] msg = Encoding.UTF8.GetBytes("This is a test");
byte[] bytes = new byte[256];
try
{
// Blocks until send returns.
int byteCount = server.Send(msg, 0, msg.Length, SocketFlags.None);
Console.WriteLine("Sent {0} bytes.", byteCount);
// Get reply from the server.
byteCount = server.Receive(bytes, 0, bytes.Length, SocketFlags.None);
if (byteCount > 0)
Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
}
catch (SocketException e)
{
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
return (e.ErrorCode);
}
return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, offset, message size, and socket flags.
Public Shared Function SendReceiveTest4(ByVal server As Socket) As Integer
Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
Dim bytes(255) As Byte
Try
' Blocks until send returns.
Dim byteCount As Integer = server.Send(msg, 0, msg.Length, SocketFlags.None)
Console.WriteLine("Sent {0} bytes.", byteCount)
' Get reply from the server.
byteCount = server.Receive(bytes, 0, server.Available, SocketFlags.None)
If byteCount > 0 Then
Console.WriteLine(Encoding.UTF8.GetString(bytes))
End If
Catch e As SocketException
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
Return e.ErrorCode
End Try
Return 0
End Function 'SendReceiveTest4
Remarques
Send envoie de manière synchrone des données à l’hôte distant spécifié dans la Connect méthode ou Accept et retourne le nombre d’octets correctement envoyés. Send peut être utilisé pour les protocoles orientés connexion et sans connexion.
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 devez appeler Connect avant d’appeler cette méthode ou Send lever un SocketException. Si vous utilisez un protocole orienté connexion, vous devez utiliser Connect pour établir une connexion hôte distante ou utiliser Accept pour accepter une connexion entrante.
Si vous utilisez un protocole sans connexion et que vous envisagez d’envoyer des données à plusieurs hôtes différents, vous devez utiliser SendTo. Si vous n’utilisez SendTopas , vous devrez appeler Connect avant chaque appel à Send. Il est possible d’utiliser SendTo même après avoir établi un hôte distant par défaut avec Connect. Vous pouvez également modifier l’hôte distant par défaut avant d’appeler Send en effectuant un autre appel à Connect.
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 Send lèvera un SocketException.
Si vous utilisez un protocole orienté connexion, Send se bloque jusqu’à ce que le nombre d’octets demandé soit envoyé, sauf si un délai d’attente a été défini à l’aide Socket.SendTimeoutde . Si la valeur du délai d’attente a été dépassée, l’appel Send lève un SocketException. En mode sans blocage, Send peut se terminer avec succès même s’il envoie moins que le nombre d’octets que vous demandez. 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 Send 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. 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
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
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
S’applique à
Send(Byte[], Int32, SocketFlags)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Reçoit le nombre spécifié d'octets de données à un Socket connecté, à l'aide du SocketFlags spécifié.
public:
int Send(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Send (byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : byte[] * int * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffer As Byte(), size As Integer, socketFlags As SocketFlags) As Integer
Paramètres
- size
- Int32
Le nombre d’octets à envoyer.
- socketFlags
- SocketFlags
Combinaison d’opérations de bits des valeurs SocketFlags.
Retours
Le nombre d’octets envoyés au Socket.
Exceptions
buffer
a la valeur null
.
size
est inférieur à 0 ou dépasse la taille de la mémoire tampon.
socketFlags
n’est pas une combinaison valide de valeurs.
- ou -
Une erreur du système d'exploitation s'est produite lors de l'accès au socket.
Socket a été fermé.
Exemples
L’exemple de code suivant envoie les données trouvées dans la mémoire tampon et spécifie None pour SocketFlags.
// Displays sending with a connected socket
// using the overload that takes a buffer, message size, and socket flags.
int SendReceiveTest3( Socket^ server )
{
array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
array<Byte>^ bytes = gcnew array<Byte>(256);
try
{
// Blocks until send returns.
int i = server->Send( msg, msg->Length, SocketFlags::None );
Console::WriteLine( "Sent {0} bytes.", i.ToString() );
// Get reply from the server.
int byteCount = server->Receive( bytes, server->Available,
SocketFlags::None );
if ( byteCount > 0 )
{
Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
}
}
catch ( SocketException^ e )
{
Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
return (e->ErrorCode);
}
return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer, message size, and socket flags.
public static int SendReceiveTest3(Socket server)
{
byte[] msg = Encoding.UTF8.GetBytes("This is a test");
byte[] bytes = new byte[256];
try
{
// Blocks until send returns.
int i = server.Send(msg, msg.Length, SocketFlags.None);
Console.WriteLine("Sent {0} bytes.", i);
// Get reply from the server.
int byteCount = server.Receive(bytes, bytes.Length, SocketFlags.None);
if (byteCount > 0)
Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
}
catch (SocketException e)
{
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
return (e.ErrorCode);
}
return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, message size, and socket flags.
Public Shared Function SendReceiveTest3(ByVal server As Socket) As Integer
Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
Dim bytes(255) As Byte
Try
' Blocks until send returns.
Dim i As Integer = server.Send(msg, msg.Length, SocketFlags.None)
Console.WriteLine("Sent {0} bytes.", i)
' Get reply from the server.
Dim byteCount As Integer = server.Receive(bytes, server.Available, SocketFlags.None)
If byteCount > 0 Then
Console.WriteLine(Encoding.UTF8.GetString(bytes))
End If
Catch e As SocketException
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
Return e.ErrorCode
End Try
Return 0
End Function 'SendReceiveTest3
Remarques
Send envoie de façon synchrone des données à l’hôte distant établi dans la Connect méthode ou Accept et retourne le nombre d’octets correctement envoyés. Send peut être utilisé pour les protocoles orientés connexion et sans connexion.
Cette surcharge nécessite une mémoire tampon qui contient les données que vous souhaitez envoyer, le nombre d’octets que vous souhaitez envoyer et une combinaison de bits de n’importe quel SocketFlags. 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 devez appeler Connect avant d’appeler cette méthode, ou Send lève un SocketException. Si vous utilisez un protocole orienté connexion, vous devez utiliser Connect pour établir une connexion hôte distante ou utiliser Accept pour accepter une connexion entrante.
Si vous utilisez un protocole sans connexion et que vous envisagez d’envoyer des données à plusieurs hôtes différents, vous devez utiliser la SendTo méthode . Si vous n’utilisez pas la SendTo méthode, vous devez appeler la Connect méthode avant chaque appel à la Send méthode. Vous pouvez utiliser SendTo même après avoir établi un hôte distant par défaut avec Connect. Vous pouvez également modifier l’hôte distant par défaut avant d’appeler Send en effectuant un autre appel à Connect.
Avec un protocole orienté connexion, Send se bloque jusqu’à ce que le nombre d’octets demandé soit envoyé, sauf si un délai d’attente a été défini à l’aide Socket.SendTimeoutde . Si la valeur du délai d’attente a été dépassée, l’appel Send lève un SocketException. En mode sans blocage, Send peut se terminer avec succès même s’il envoie moins que le nombre d’octets que vous demandez. 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 Send 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
Vous devez vous assurer que la taille ne dépasse pas la taille de paquet maximale du fournisseur de services sous-jacent. Si c’est le cas, le datagramme ne sera pas envoyé et Send lèvera un SocketException. 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.
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.
Important
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.
Voir aussi
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
S’applique à
Send(IList<ArraySegment<Byte>>)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envoie le jeu de mémoires tampon dans la liste à un Socket connecté.
public:
int Send(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers);
public int Send (System.Collections.Generic.IList<ArraySegment<byte>> buffers);
member this.Send : System.Collections.Generic.IList<ArraySegment<byte>> -> int
Public Function Send (buffers As IList(Of ArraySegment(Of Byte))) As Integer
Paramètres
- buffers
- IList<ArraySegment<Byte>>
Liste de ArraySegment<T> de type Byte qui contient les données à envoyer.
Retours
Le nombre d’octets envoyés au Socket.
Exceptions
buffers
a la valeur null
.
buffers
est vide.
Une erreur s’est produite pendant la tentative d’accès au socket. Consultez la section Notes ci-dessous.
Socket a été fermé.
Remarques
Send peut être utilisé pour les protocoles orientés connexion et sans connexion.
Cette surcharge nécessite au moins une mémoire tampon qui contient les données que vous souhaitez envoyer.
Si vous utilisez un protocole sans connexion, vous devez appeler Connect avant d’appeler cette méthode, ou Send lève un SocketException. Si vous utilisez un protocole orienté connexion, vous devez utiliser Connect pour établir une connexion hôte distante ou utiliser Accept pour accepter une connexion entrante.
Si vous utilisez un protocole sans connexion et que vous envisagez d’envoyer des données à plusieurs hôtes différents, vous devez utiliser la SendTo méthode . Si vous n’utilisez pas la SendTo méthode , vous devrez appeler Connect avant chaque appel à Send. Vous pouvez utiliser SendTo même après avoir établi un hôte distant par défaut avec Connect. Vous pouvez également modifier l’hôte distant par défaut avant d’appeler Send en effectuant un autre appel à Connect.
Si vous utilisez un protocole orienté connexion, Send se bloque jusqu’à ce que tous les octets de la mémoire tampon soient envoyés, sauf si un délai d’attente a été défini à l’aide Socket.SendTimeoutde . Si la valeur du délai d’attente a été dépassée, l’appel Send lève un SocketException. En mode sans blocage, Send peut se terminer correctement même s’il envoie moins que le nombre d’octets dans la mémoire tampon. 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 les octets dans la mémoire tampon. 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 Send 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. 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
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.
S’applique à
Send(IList<ArraySegment<Byte>>, SocketFlags)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envoie le jeu de mémoires tampon dans la liste à un Socket connecté, à l'aide du SocketFlags spécifié.
public:
int Send(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags);
public int Send (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags) As Integer
Paramètres
- buffers
- IList<ArraySegment<Byte>>
Liste de ArraySegment<T> de type Byte qui contient les données à envoyer.
- socketFlags
- SocketFlags
Combinaison d’opérations de bits des valeurs SocketFlags.
Retours
Le nombre d’octets envoyés au Socket.
Exceptions
buffers
a la valeur null
.
buffers
est vide.
Une erreur s’est produite pendant la tentative d’accès au socket.
Socket a été fermé.
Remarques
Cette surcharge nécessite au moins une mémoire tampon qui contient les données que vous souhaitez envoyer. La SocketFlags valeur par défaut est 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 devez appeler Connect avant d’appeler cette méthode, ou Send lève un SocketException. Si vous utilisez un protocole orienté connexion, vous devez utiliser Connect pour établir une connexion hôte distante ou utiliser Accept pour accepter une connexion entrante.
Si vous utilisez un protocole sans connexion et que vous envisagez d’envoyer des données à plusieurs hôtes différents, vous devez utiliser la SendTo méthode . Si vous n’utilisez pas la SendTo méthode , vous devrez appeler Connect avant chaque appel à Send. Vous pouvez utiliser SendTo même après avoir établi un hôte distant par défaut avec Connect. Vous pouvez également modifier l’hôte distant par défaut avant d’appeler Send en effectuant un autre appel à Connect.
Si vous utilisez un protocole orienté connexion, Send bloque jusqu’à ce que tous les octets de la mémoire tampon soient envoyés, sauf si un délai d’attente a été défini à l’aide Socket.SendTimeoutde . Si la valeur du délai d’attente a été dépassée, l’appel Send lève un SocketException. En mode non bloquant, Send peut se terminer correctement même s’il envoie moins que le nombre d’octets dans la mémoire tampon. 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 les octets dans la mémoire tampon. Il n’est pas non plus garanti 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é significative de données sortantes soit collectée. Une exécution réussie de la Send méthode signifie que le système sous-jacent a eu de la place 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. 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
La réussite d’un envoi n’indique pas que les données ont été correctement livrées. Si aucun espace tampon n’est disponible dans le système de transport pour contenir les données à transmettre, l’envoi est bloqué, 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.
S’applique à
Send(Byte[], SocketFlags)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envoie des données à un Socket connecté à l'aide du SocketFlags spécifié.
public:
int Send(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Send (byte[] buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : byte[] * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffer As Byte(), socketFlags As SocketFlags) As Integer
Paramètres
- socketFlags
- SocketFlags
Combinaison d’opérations de bits des valeurs SocketFlags.
Retours
Le nombre d’octets envoyés au Socket.
Exceptions
buffer
a la valeur null
.
Une erreur s’est produite pendant la tentative d’accès au socket.
Socket a été fermé.
Exemples
L’exemple de code suivant illustre l’envoi de données sur une connexion Socket.
// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
int SendReceiveTest2( Socket^ server )
{
array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
array<Byte>^ bytes = gcnew array<Byte>(256);
try
{
// Blocks until send returns.
int byteCount = server->Send( msg, SocketFlags::None );
Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
// Get reply from the server.
byteCount = server->Receive( bytes, SocketFlags::None );
if ( byteCount > 0 )
{
Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
}
}
catch ( SocketException^ e )
{
Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
return (e->ErrorCode);
}
return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
public static int SendReceiveTest2(Socket server)
{
byte[] msg = Encoding.UTF8.GetBytes("This is a test");
byte[] bytes = new byte[256];
try
{
// Blocks until send returns.
int byteCount = server.Send(msg, SocketFlags.None);
Console.WriteLine("Sent {0} bytes.", byteCount);
// Get reply from the server.
byteCount = server.Receive(bytes, SocketFlags.None);
if (byteCount > 0)
Console.WriteLine(Encoding.UTF8.GetString(bytes));
}
catch (SocketException e)
{
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
return (e.ErrorCode);
}
return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer and socket flags.
Public Shared Function SendReceiveTest2(ByVal server As Socket) As Integer
Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
Dim bytes(255) As Byte
Try
' Blocks until send returns.
Dim byteCount As Integer = server.Send(msg, SocketFlags.None)
Console.WriteLine("Sent {0} bytes.", byteCount)
' Get reply from the server.
byteCount = server.Receive(bytes, SocketFlags.None)
If byteCount > 0 Then
Console.WriteLine(Encoding.UTF8.GetString(bytes))
End If
Catch e As SocketException
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
Return e.ErrorCode
End Try
Return 0
End Function 'SendReceiveTest2
Remarques
Send envoie de manière synchrone des données à l’hôte distant établi dans la Connect méthode ou Accept et retourne le nombre d’octets envoyés avec succès. La Send méthode peut être utilisée à la fois pour les protocoles orientés connexion et sans connexion.
Cette surcharge nécessite une mémoire tampon qui contient les données que vous souhaitez envoyer et une combinaison de bits de SocketFlags. Par défaut, le décalage de la mémoire tampon est égal à 0 et le nombre d’octets à envoyer par défaut à la taille de la mémoire tampon. Si vous spécifiez l’indicateur DontRoute comme valeur de socketflags
paramètre, les données que vous envoyez ne seront pas routées.
Si vous utilisez un protocole sans connexion, vous devez appeler Connect avant d’appeler cette méthode ou Send lever un SocketException. Si vous utilisez un protocole orienté connexion, vous devez utiliser Connect pour établir une connexion hôte distante ou utiliser Accept pour accepter une connexion entrante.
Si vous utilisez un protocole sans connexion et envisagez d’envoyer des données à plusieurs hôtes différents, vous devez utiliser la SendTo méthode . Si vous n’utilisez pas la SendTo méthode, vous devez appeler la Connect méthode avant chaque appel à Send. Vous pouvez utiliser SendTo même après avoir établi un hôte distant par défaut avec Connect. Vous pouvez également modifier l’hôte distant par défaut avant d’appeler Send en effectuant un autre appel à Connect.
Si vous utilisez un protocole orienté connexion, Send bloque jusqu’à ce que tous les octets de la mémoire tampon soient envoyés, sauf si un délai d’attente a été défini à l’aide Socket.SendTimeoutde . Si la valeur du délai d’attente a été dépassée, l’appel Send lève un SocketException. En mode sans blocage, Send peut se terminer correctement, même s’il envoie moins que le nombre d’octets dans la mémoire tampon. 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’est pas non plus garanti 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é significative de données sortantes soit collectée. Une exécution réussie de la Send méthode signifie que le système sous-jacent a eu de la place pour mettre en mémoire tampon vos données pour un envoi réseau.
Notes
Vous devez vous assurer que la taille de votre mémoire tampon ne dépasse pas la taille de paquet maximale du fournisseur de services sous-jacent. Si c’est le cas, le datagramme n’est pas envoyé et Send lève un SocketException. 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
La réussite d’un envoi n’indique pas que les données ont été correctement livrées. Si aucun espace tampon n’est disponible dans le système de transport pour contenir les données à transmettre, l’envoi est bloqué, 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
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
S’applique à
Send(ReadOnlySpan<Byte>, SocketFlags)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envoie des données à un Socket connecté à l'aide du SocketFlags spécifié.
public:
int Send(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Send (ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags) As Integer
Paramètres
- buffer
- ReadOnlySpan<Byte>
Étendue d’octets qui contient les données à envoyer.
- socketFlags
- SocketFlags
Combinaison de bits des valeurs d’énumération qui spécifie les comportements d’envoi et de réception.
Retours
Le nombre d’octets envoyés au Socket.
Exceptions
Une erreur s’est produite pendant la tentative d’accès au socket.
Socket a été fermé.
Voir aussi
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
S’applique à
Send(Byte[])
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Envoie des données à un Socket connecté.
public:
int Send(cli::array <System::Byte> ^ buffer);
public int Send (byte[] buffer);
member this.Send : byte[] -> int
Public Function Send (buffer As Byte()) As Integer
Paramètres
Retours
Le nombre d’octets envoyés au Socket.
Exceptions
buffer
a la valeur null
.
Une erreur s’est produite pendant la tentative d’accès au socket.
Socket a été fermé.
Exemples
L’exemple de code suivant illustre l’envoi de données sur une connexion Socket.
// Displays sending with a connected socket
// using the overload that takes a buffer.
int SendReceiveTest1( Socket^ server )
{
array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
array<Byte>^ bytes = gcnew array<Byte>(256);
try
{
// Blocks until send returns.
int byteCount = server->Send( msg );
Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
// Get reply from the server.
byteCount = server->Receive( bytes );
if ( byteCount > 0 )
{
Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
}
}
catch ( SocketException^ e )
{
Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
return ( e->ErrorCode );
}
return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer.
public static int SendReceiveTest1(Socket server)
{
byte[] msg = Encoding.UTF8.GetBytes("This is a test");
byte[] bytes = new byte[256];
try
{
// Blocks until send returns.
int i = server.Send(msg);
Console.WriteLine("Sent {0} bytes.", i);
// Get reply from the server.
i = server.Receive(bytes);
Console.WriteLine(Encoding.UTF8.GetString(bytes));
}
catch (SocketException e)
{
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
return (e.ErrorCode);
}
return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer.
Public Shared Function SendReceiveTest1(ByVal server As Socket) As Integer
Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
Dim bytes(255) As Byte
Try
' Blocks until send returns.
Dim i As Integer = server.Send(msg)
Console.WriteLine("Sent {0} bytes.", i)
' Get reply from the server.
i = server.Receive(bytes)
Console.WriteLine(Encoding.UTF8.GetString(bytes))
Catch e As SocketException
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
Return e.ErrorCode
End Try
Return 0
End Function 'SendReceiveTest1
Remarques
Send envoie de manière synchrone des données à l’hôte distant spécifié dans la Connect méthode ou Accept et retourne le nombre d’octets correctement envoyés. Send peut être utilisé à la fois pour les protocoles orientés connexion et sans connexion.
Cette surcharge nécessite une mémoire tampon qui contient les données que vous souhaitez envoyer. La SocketFlags valeur par défaut est 0, le décalage de mémoire tampon par défaut est égal à 0 et le nombre d’octets à envoyer par défaut à la taille de la mémoire tampon.
Si vous utilisez un protocole sans connexion, vous devez appeler Connect avant d’appeler cette méthode ou Send lever un SocketException. Si vous utilisez un protocole orienté connexion, vous devez utiliser Connect pour établir une connexion hôte distante ou utiliser Accept pour accepter une connexion entrante.
Si vous utilisez un protocole sans connexion et envisagez d’envoyer des données à plusieurs hôtes différents, vous devez utiliser la SendTo méthode . Si vous n’utilisez pas la SendTo méthode, vous devez appeler Connect avant chaque appel à Send. Vous pouvez utiliser SendTo même après avoir établi un hôte distant par défaut avec Connect. Vous pouvez également modifier l’hôte distant par défaut avant d’appeler Send en effectuant un autre appel à Connect.
Si vous utilisez un protocole orienté connexion, Send bloque jusqu’à ce que tous les octets de la mémoire tampon soient envoyés, sauf si un délai d’attente a été défini à l’aide Socket.SendTimeoutde . Si la valeur du délai d’attente a été dépassée, l’appel Send lève un SocketException. En mode sans blocage, Send peut se terminer correctement, même s’il envoie moins que le nombre d’octets dans la mémoire tampon. 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 les octets dans la mémoire tampon. Il n’est pas non plus garanti 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é significative de données sortantes soit collectée. Une exécution réussie de la Send méthode signifie que le système sous-jacent a eu de la place 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. 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
La réussite d’un envoi n’indique pas que les données ont été correctement livrées. Si aucun espace tampon n’est disponible dans le système de transport pour contenir les données à transmettre, l’envoi est bloqué, 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
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)