Condividi tramite


Socket.SendFile Metodo

Definizione

Invia un file e dati facoltativi in modo sincrono a un oggetto connesso Socket.

Overload

Nome Descrizione
SendFile(String)

Invia il file fileName a un oggetto connesso Socket con il flag di UseDefaultWorkerThread trasmissione.

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

Invia il file fileName e i buffer di dati a un oggetto connesso Socket usando il valore specificato TransmitFileOptions .

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

Invia il file fileName e i buffer di dati a un oggetto connesso Socket usando il valore specificato TransmitFileOptions .

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.

Si applica a