Socket.SendFile 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 de façon synchrone un fichier et des données facultatives à un Socket connecté.
Surcharges
SendFile(String) |
Envoie le fichier |
SendFile(String, Byte[], Byte[], TransmitFileOptions) |
Envoie le |
SendFile(String, ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, TransmitFileOptions) |
Envoie le |
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 preBuffer
null
valeur 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.