Partager via


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)

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

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 est défini par défaut sur UseDefaultWorkerThread (0), et les paramètres et postBuffer ont la preBuffernullvaleur par défaut . Si fileName se trouve dans le répertoire local, il peut être identifié uniquement avec le nom du fichier ; sinon, le chemin d’accès 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 .

SendFile envoie de façon synchrone un fichier à l’hôte distant spécifié dans la Connect méthode ou Accept . SendFile peut être utilisé 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 , une exception est SocketException levée. 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 orienté connexion, SendFile se bloque jusqu’à ce que le fichier soit envoyé. En mode sans blocage, SendFile peut se terminer correctement avant l’envoi du fichier entier. Il n’existe aucune garantie que les données que vous envoyez s’affichent immédiatement sur le réseau. Pour augmenter l’efficacité du réseau, le système sous-jacent peut retarder la transmission jusqu’à ce qu’une quantité importante de données sortantes soit collectée. Une exécution réussie de la SendFile 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

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 à

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

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

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 de bits des valeurs d’énumération qui spécifie le mode de transfert du fichier.

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ébuffer et un postbuffer de données et les envoyons à l’hôte distant avec le fichier . Les valeurs par défaut TransmitFileOptions sont utilisées.

// 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 de valeurs au niveau du TransmitFileOptions bit. Le preBuffer paramètre contient toutes les données que vous souhaitez faire précéder le fichier. postBuffer contient les données que vous souhaitez suivre le fichier. Si fileName se trouve dans le répertoire de travail actuel, il peut être identifié uniquement par le nom du fichier ; sinon, le chemin d’accès 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 Windows 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 .

SendFile envoie de façon synchrone un fichier à l’hôte distant spécifié dans la Connect méthode ou Accept . SendFile peut être utilisé 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 utiliser Connect pour établir une connexion hôte distante ou utiliser Accept pour accepter une connexion entrante.

Si vous utilisez un protocole orienté connexion, SendFile se bloque jusqu’à ce que le fichier entier soit envoyé. En mode sans blocage, SendFile peut se terminer correctement avant l’envoi du fichier entier. Il n’existe aucune garantie que les données que vous envoyez s’affichent immédiatement sur le réseau. Pour augmenter l’efficacité du réseau, le système sous-jacent peut retarder la transmission jusqu’à ce qu’une quantité importante de données sortantes soit collectée. Une exécution réussie de la SendFile 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

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 à

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

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

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>

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

postBuffer
ReadOnlySpan<Byte>

ReadOnlySpan<T> qui 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 à