Socket.SendFile Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Invia un file e dati facoltativi in modo sincrono a un oggetto connesso Socket.
Overload
| Nome | Descrizione |
|---|---|
| SendFile(String) |
Invia il file |
| SendFile(String, Byte[], Byte[], TransmitFileOptions) |
Invia il file |
| SendFile(String, ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, TransmitFileOptions) |
Invia il file |
SendFile(String)
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
Invia il file fileName a un oggetto connesso Socket con il flag di UseDefaultWorkerThread trasmissione.
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)
Parametri
- fileName
- String
Oggetto String contenente il percorso e il nome del file da inviare. Questo parametro può essere null.
Eccezioni
Il socket non è connesso a un host remoto.
L'oggetto Socket è stato chiuso.
L'oggetto Socket non è in modalità di blocco e non può accettare questa chiamata sincrona.
Impossibile trovare il file fileName .
Si è verificato un errore durante il tentativo di accesso al socket.
Esempio
L'esempio di codice seguente crea e connette un socket e quindi invia un file all'host remoto. Il file "test.txt" si trova nella directory radice del computer locale.
// 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();
Commenti
Questo overload invia il file fileName al socket connesso. Per impostazione predefinita, UseDefaultWorkerThread il flags parametro è (0) e i preBuffer parametri e postBuffer per impostazione predefinita sono null. Se fileName si trova nella directory locale, può essere identificato con solo il nome del file. In caso contrario, è necessario specificare il percorso completo e il nome del file. Caratteri jolly (".. \\myfile.txt") e i nomi di condivisione UNC ("\\\\\shared directory\\myfile.txt") sono supportati. Se il file non viene trovato, viene generata l'eccezione FileNotFoundException .
Questo metodo usa la TransmitFile funzione trovata nell'API Windows Sockets 2. Per altre informazioni sulla TransmitFile funzione e sui relativi flag, vedere la documentazione di Windows Sockets .
SendFile invia in modo sincrono un file all'host remoto specificato nel Connect metodo o Accept . SendFile può essere usato sia per i protocolli orientati alla connessione che per i protocolli senza connessione.
Se si usa un protocollo senza connessione, è necessario chiamare prima di chiamare Connect questo metodo, altrimenti SendFile genera un'eccezione SocketException . Se si usa un protocollo orientato alla connessione, è necessario usare Connect per stabilire una connessione host remota o usare Accept per accettare una connessione in ingresso.
Se si usa un protocollo orientato alla connessione, SendFile blocca fino all'invio del file. In modalità non bloccante, SendFile può essere completato correttamente prima dell'invio dell'intero file. Non è garantito che i dati inviati vengano visualizzati immediatamente nella rete. Per aumentare l'efficienza della rete, il sistema sottostante può ritardare la trasmissione fino a quando non viene raccolta una quantità significativa di dati in uscita. Un completamento corretto del SendFile metodo significa che il sistema sottostante ha avuto spazio per memorizzare nel buffer i dati per un invio di rete.
Annotazioni
Se si riceve un oggetto SocketException, utilizzare la SocketException.ErrorCode proprietà per ottenere il codice di errore specifico. Dopo aver ottenuto questo codice, fare riferimento alla documentazione relativa al codice di errore dell'API Windows Sockets versione 2 per una descrizione dettagliata dell'errore.
Annotazioni
Questo membro restituisce informazioni di traccia quando si abilita la traccia di rete nell'applicazione. Per altre informazioni, vedere Traccia di rete in .NET Framework.
Si applica a
SendFile(String, Byte[], Byte[], TransmitFileOptions)
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
Invia il file fileName e i buffer di dati a un oggetto connesso Socket usando il valore specificato TransmitFileOptions .
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)
Parametri
- fileName
- String
Percorso e nome del file da inviare. Questo parametro può essere null.
- preBuffer
- Byte[]
Dati da inviare prima dell'invio del file. Questo parametro può essere null.
- postBuffer
- Byte[]
Dati da inviare dopo l'invio del file. Questo parametro può essere null.
- flags
- TransmitFileOptions
Combinazione bit per bit dei valori di enumerazione che specifica la modalità di trasferimento del file.
Eccezioni
Il sistema operativo non è Windows NT o versione successiva.
oppure
Il socket non è connesso a un host remoto.
L'oggetto Socket è stato chiuso.
L'oggetto Socket non è in modalità di blocco e non può accettare questa chiamata sincrona.
Impossibile trovare il file fileName .
Si è verificato un errore durante il tentativo di accesso al socket.
Esempio
Nell'esempio di codice seguente viene creato e connesso un socket. Il file "test.txt" si trova nella directory radice del computer locale. In questo esempio viene creato un prebuffer e un postbuffer di dati e li si invia all'host remoto con il file . Vengono utilizzate le impostazioni predefinite TransmitFileOptions .
// 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();
Commenti
Questo overload richiede il nome del file da inviare e una combinazione bit per bit di TransmitFileOptions valori. Il preBuffer parametro contiene tutti i dati che si desidera precedere dal file.
postBuffer contiene i dati che si desidera seguire il file. Se fileName si trova nella directory di lavoro corrente, può essere identificato con solo il nome del file. In caso contrario, è necessario specificare il percorso completo e il nome del file. Caratteri jolly (".. \\myfile.txt") e i nomi di condivisione UNC ("\\\\\shared directory\\myfile.txt") sono supportati.
Il flags parametro fornisce al provider di servizi Window Sockets informazioni aggiuntive sul trasferimento di file. Per altre informazioni su come usare questo parametro, vedere TransmitFileOptions.
Questo metodo usa la TransmitFile funzione trovata nell'API Windows Sockets 2. Per altre informazioni sulla TransmitFile funzione e sui relativi flag, vedere la documentazione di Windows Sockets .
SendFile invia in modo sincrono un file all'host remoto specificato nel Connect metodo o Accept . SendFile può essere usato sia per i protocolli orientati alla connessione che per i protocolli senza connessione.
Se si usa un protocollo senza connessione, è necessario chiamare prima di chiamare Connect questo metodo; in caso contrario SendFile , genera un'eccezione SocketException. Se si usa un protocollo orientato alla connessione, è necessario usare Connect per stabilire una connessione host remota o per Accept accettare una connessione in ingresso.
Se si usa un protocollo orientato alla connessione, SendFile blocca fino a quando non viene inviato l'intero file. In modalità non bloccante, SendFile può essere completato correttamente prima dell'invio dell'intero file. Non è garantito che i dati inviati vengano visualizzati immediatamente nella rete. Per aumentare l'efficienza della rete, il sistema sottostante può ritardare la trasmissione fino a quando non viene raccolta una quantità significativa di dati in uscita. Un completamento corretto del SendFile metodo significa che il sistema sottostante ha avuto spazio per memorizzare nel buffer i dati per un invio di rete.
Annotazioni
Se si riceve un oggetto SocketException, utilizzare la SocketException.ErrorCode proprietà per ottenere il codice di errore specifico. Dopo aver ottenuto questo codice, fare riferimento alla documentazione relativa al codice di errore dell'API Windows Sockets versione 2 per una descrizione dettagliata dell'errore.
Annotazioni
Questo membro restituisce informazioni di traccia quando si abilita la traccia di rete nell'applicazione. Per altre informazioni, vedere Traccia di rete in .NET Framework.
Si applica a
SendFile(String, ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, TransmitFileOptions)
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
Invia il file fileName e i buffer di dati a un oggetto connesso Socket usando il valore specificato TransmitFileOptions .
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)
Parametri
- fileName
- String
Oggetto String contenente il percorso e il nome del file da inviare. Questo parametro può essere null.
- preBuffer
- ReadOnlySpan<Byte>
Oggetto ReadOnlySpan<T> contenente i dati da inviare prima dell'invio del file. Questo buffer può essere vuoto.
- postBuffer
- ReadOnlySpan<Byte>
Oggetto ReadOnlySpan<T> contenente i dati da inviare dopo l'invio del file. Questo buffer può essere vuoto.
- flags
- TransmitFileOptions
Uno o più valori TransmitFileOptions .
Eccezioni
L'oggetto Socket è stato chiuso.
L'oggetto Socket non è connesso a un host remoto.
L'oggetto Socket non è in modalità di blocco e non può accettare questa chiamata sincrona.
Impossibile trovare il file fileName .
Si è verificato un errore durante il tentativo di accesso al socket.