Socket.SendFile Méthode

Définition

Envoie de façon synchrone un fichier et des données facultatives à un Socket connecté.

Surcharges

SendFile(String)

Envoie le fichier fileName à un objet Socket connecté avec l'indicateur de transmission UseDefaultWorkerThread.

SendFile(String, Byte[], Byte[], TransmitFileOptions)

Envoie le fileName et les tampons de données du fichier à un objet Socket connecté à l’aide de la valeur TransmitFileOptions spécifiée.

SendFile(String, ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, TransmitFileOptions)

Envoie le fileName et les tampons de données du fichier à un objet Socket connecté à l’aide de la valeur TransmitFileOptions spécifiée.

SendFile(String)

Envoie le fichier fileName à un objet Socket connecté avec l'indicateur de transmission UseDefaultWorkerThread.

public:
 void SendFile(System::String ^ fileName);
public void SendFile (string fileName);
public void SendFile (string? fileName);
member this.SendFile : string -> unit
Public Sub SendFile (fileName As String)

Paramètres

fileName
String

String contenant le chemin d’accès et le nom du fichier à envoyer. Ce paramètre peut être null.

Exceptions

Le socket n’est pas connecté à un hôte distant.

L’objet Socket a été fermé.

L’objet Socket n’est pas en mode blocage et ne peut pas accepter cet appel synchrone.

Le fichier fileName est introuvable.

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

Exemples

L’exemple de code suivant crée et connecte un socket, puis envoie un fichier à l’hôte distant. Le fichier « test.txt » se trouve dans le répertoire racine de l’ordinateur local.

// Establish the local endpoint for the socket.
IPHostEntry^ ipHost = Dns::GetHostEntry( Dns::GetHostName() );
IPAddress^ ipAddr = ipHost->AddressList[ 0 ];
IPEndPoint^ ipEndPoint = gcnew IPEndPoint( ipAddr,11000 );

// Create a TCP socket.
Socket^ client = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );

// Connect the socket to the remote endpoint.
client->Connect( ipEndPoint );

// There is a text file test.txt located in the root directory.
String^ fileName = "C:\\test.txt";

// Send file fileName to remote device
Console::WriteLine( "Sending {0} to the host.", fileName );
client->SendFile( fileName );

// Release the socket.
client->Shutdown( SocketShutdown::Both );
client->Close();
// Establish the local endpoint for the socket.
IPHostEntry ipHost = Dns.GetHostEntry(Dns.GetHostName());
IPAddress  ipAddr = ipHost.AddressList[0];
IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 11000);

// Create a TCP socket.
Socket client = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream, ProtocolType.Tcp);

// Connect the socket to the remote endpoint.
client.Connect(ipEndPoint);

// There is a text file test.txt located in the root directory.
string fileName = "C:\\test.txt";

// Send file fileName to remote device
Console.WriteLine("Sending {0} to the host.", fileName);
client.SendFile(fileName);

// Release the socket.
client.Shutdown(SocketShutdown.Both);
client.Close();

Remarques

Cette surcharge envoie le fichier fileName au socket connecté. Le flags paramètre a UseDefaultWorkerThread la valeur par défaut (0) et les postBuffer preBuffer paramètres par défaut null. S’il fileName se trouve dans le répertoire local, il peut être identifié uniquement avec le nom du fichier ; sinon, le chemin complet et le nom du fichier doivent être spécifiés. Caractères génériques (« ..\\myfile.txt ») et les noms de partage UNC («\\\ \shared directory\\myfile.txt ») sont pris en charge. Si le fichier est introuvable, l’exception FileNotFoundException est levée.

Cette méthode utilise la TransmitFile fonction trouvée dans l’API Windows Sockets 2. Pour plus d’informations sur la TransmitFile fonction et ses indicateurs, consultez la documentation Windows Sockets.

SendFileenvoie de façon synchrone un fichier à l’hôte distant spécifié dans la ou Accept la Connect méthode. SendFile peut être utilisé à la fois pour les protocoles orientés connexion et sans connexion.

Si vous utilisez un protocole sans connexion, vous devez appeler Connect avant d’appeler cette méthode, sinon SendFile lève une SocketException exception. Si vous utilisez un protocole orienté connexion, vous devez soit utiliser Connect pour établir une connexion hôte distante, soit Accept pour accepter une connexion entrante.

Si vous utilisez un protocole orienté connexion, SendFile bloque jusqu’à ce que le fichier soit envoyé. En mode non bloquant, SendFile peut se terminer correctement avant l’envoi de l’intégralité du fichier. 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 réussite de la SendFile 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

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 le .NET Framework.

S’applique à

SendFile(String, Byte[], Byte[], TransmitFileOptions)

Envoie le fileName et les tampons de données du fichier à un objet Socket connecté à l’aide de la valeur TransmitFileOptions spécifiée.

public:
 void SendFile(System::String ^ fileName, cli::array <System::Byte> ^ preBuffer, cli::array <System::Byte> ^ postBuffer, System::Net::Sockets::TransmitFileOptions flags);
public void SendFile (string? fileName, byte[]? preBuffer, byte[]? postBuffer, System.Net.Sockets.TransmitFileOptions flags);
public void SendFile (string fileName, byte[] preBuffer, byte[] postBuffer, System.Net.Sockets.TransmitFileOptions flags);
member this.SendFile : string * byte[] * byte[] * System.Net.Sockets.TransmitFileOptions -> unit
Public Sub SendFile (fileName As String, preBuffer As Byte(), postBuffer As Byte(), flags As TransmitFileOptions)

Paramètres

fileName
String

Chemin d’accès et nom du fichier à envoyer. Ce paramètre peut être null.

preBuffer
Byte[]

Données à envoyer avant l’envoi du fichier. Ce paramètre peut être null.

postBuffer
Byte[]

Données à envoyer après l’envoi du fichier. Ce paramètre peut être null.

flags
TransmitFileOptions

Combinaison au niveau du bit des valeurs d’énumération qui spécifie la façon dont le fichier est transféré.

Exceptions

Le système d'exploitation n'est pas Windows NT ou une version ultérieure.

  • ou -

Le socket n’est pas connecté à un hôte distant.

L’objet Socket a été fermé.

L’objet Socket n’est pas en mode blocage et ne peut pas accepter cet appel synchrone.

Le fichier fileName est introuvable.

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

Exemples

L’exemple de code suivant crée et connecte un socket. Le fichier « test.txt » se trouve dans le répertoire racine de l’ordinateur local. Dans cet exemple, nous créons un prébogueur et un postbuffer de données et les envoyons à l’hôte distant avec le fichier. La valeur par défaut TransmitFileOptions est utilisée.

// Establish the local endpoint for the socket.
IPHostEntry^ ipHost = Dns::GetHostEntry( Dns::GetHostName() );
IPAddress^ ipAddr = ipHost->AddressList[ 0 ];
IPEndPoint^ ipEndPoint = gcnew IPEndPoint( ipAddr,11000 );

// Create a TCP socket.
Socket^ client = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );

// Connect the socket to the remote endpoint.
client->Connect( ipEndPoint );

// Send file fileName to the remote host with preBuffer and postBuffer data.
// There is a text file test.txt located in the root directory.
String^ fileName = "C:\\test.txt";

// Create the preBuffer data.
String^ string1 = String::Format( "This is text data that precedes the file.{0}", Environment::NewLine );
array<Byte>^preBuf = Encoding::ASCII->GetBytes( string1 );

// Create the postBuffer data.
String^ string2 = String::Format( "This is text data that will follow the file.{0}", Environment::NewLine );
array<Byte>^postBuf = Encoding::ASCII->GetBytes( string2 );

//Send file fileName with buffers and default flags to the remote device.
Console::WriteLine( "Sending {0} with buffers to the host.{1}", fileName, Environment::NewLine );
client->SendFile( fileName, preBuf, postBuf, TransmitFileOptions::UseDefaultWorkerThread );

// Release the socket.
client->Shutdown( SocketShutdown::Both );
client->Close();
// Establish the local endpoint for the socket.
IPHostEntry ipHost = Dns.GetHostEntry(Dns.GetHostName());
IPAddress  ipAddr = ipHost.AddressList[0];
IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 11000);

// Create a TCP socket.
Socket client = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream, ProtocolType.Tcp);

// Connect the socket to the remote endpoint.
client.Connect(ipEndPoint);

// Send file fileName to the remote host with preBuffer and postBuffer data.
// There is a text file test.txt located in the root directory.
string fileName = "C:\\test.txt";

// Create the preBuffer data.
string string1 = String.Format("This is text data that precedes the file.{0}", Environment.NewLine);
byte[] preBuf = Encoding.ASCII.GetBytes(string1);

// Create the postBuffer data.
string string2 = String.Format("This is text data that will follow the file.{0}", Environment.NewLine);
byte[] postBuf = Encoding.ASCII.GetBytes(string2);

//Send file fileName with buffers and default flags to the remote device.
Console.WriteLine("Sending {0} with buffers to the host.{1}", fileName, Environment.NewLine);
client.SendFile(fileName, preBuf, postBuf, TransmitFileOptions.UseDefaultWorkerThread);

// Release the socket.
client.Shutdown(SocketShutdown.Both);
client.Close();

Remarques

Cette surcharge nécessite le nom du fichier que vous souhaitez envoyer et une combinaison TransmitFileOptions de valeurs au niveau du bit. Le preBuffer paramètre contient les données que vous souhaitez précéder du fichier. postBuffer contient les données que vous souhaitez suivre le fichier. S’il fileName se trouve dans le répertoire de travail actif, il peut être identifié uniquement avec le nom du fichier ; sinon, le chemin complet et le nom du fichier doivent être spécifiés. Caractères génériques (« ..\\myfile.txt ») et les noms de partage UNC («\\\ \shared directory\\myfile.txt ») sont pris en charge.

Le flags paramètre fournit au fournisseur de services Window Sockets des informations supplémentaires sur le transfert de fichiers. Pour plus d’informations sur l’utilisation de ce paramètre, consultez TransmitFileOptions.

Cette méthode utilise la TransmitFile fonction trouvée dans l’API Windows Sockets 2. Pour plus d’informations sur la TransmitFile fonction et ses indicateurs, consultez la documentation Windows Sockets.

SendFileenvoie de façon synchrone un fichier à l’hôte distant spécifié dans la ou Accept la Connect méthode. SendFile peut être utilisé à la fois pour les protocoles orientés connexion et sans connexion.

Si vous utilisez un protocole sans connexion, vous devez appeler Connect avant d’appeler cette méthode ; sinon SendFile , lève un SocketException. Si vous utilisez un protocole orienté connexion, vous devez soit utiliser Connect pour établir une connexion hôte distante, soit pour Accept accepter une connexion entrante.

Si vous utilisez un protocole orienté connexion, SendFile bloque jusqu’à ce que l’intégralité du fichier soit envoyée. En mode non bloquant, SendFile peut se terminer correctement avant l’envoi de l’intégralité du fichier. 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 réussite de la SendFile 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

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 le .NET Framework.

S’applique à

SendFile(String, ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, TransmitFileOptions)

Envoie le fileName et les tampons de données du fichier à un objet Socket connecté à l’aide de la valeur TransmitFileOptions spécifiée.

public:
 void SendFile(System::String ^ fileName, ReadOnlySpan<System::Byte> preBuffer, ReadOnlySpan<System::Byte> postBuffer, System::Net::Sockets::TransmitFileOptions flags);
public void SendFile (string? fileName, ReadOnlySpan<byte> preBuffer, ReadOnlySpan<byte> postBuffer, System.Net.Sockets.TransmitFileOptions flags);
member this.SendFile : string * ReadOnlySpan<byte> * ReadOnlySpan<byte> * System.Net.Sockets.TransmitFileOptions -> unit
Public Sub SendFile (fileName As String, preBuffer As ReadOnlySpan(Of Byte), postBuffer As ReadOnlySpan(Of Byte), flags As TransmitFileOptions)

Paramètres

fileName
String

String contenant le chemin d’accès et le nom du fichier à envoyer. Ce paramètre peut être null.

preBuffer
ReadOnlySpan<Byte>

Qui ReadOnlySpan<T> contient les données à envoyer avant l’envoi du fichier. Cette mémoire tampon peut être vide.

postBuffer
ReadOnlySpan<Byte>

Qui ReadOnlySpan<T> contient les données à envoyer après l’envoi du fichier. Cette mémoire tampon peut être vide.

flags
TransmitFileOptions

Une ou plusieurs des valeurs TransmitFileOptions.

Exceptions

L’objet Socket a été fermé.

L’objet Socket n’est pas connecté à un hôte distant.

L’objet Socket n’est pas en mode blocage et ne peut pas accepter cet appel synchrone.

Le fichier fileName est introuvable.

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

S’applique à