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 opzionali in modalità sincrona a un Socket connesso.
Overload
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
Invia il file fileName
a un oggetto connesso Socket con il flag di trasmissione 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)
Parametri
- fileName
- String
Oggetto String che contiene 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.
Il parametro fileName
del file non è stato trovato.
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 = 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();
Commenti
Questo overload invia il file fileName
al socket connesso. Per impostazione predefinita, il flags
parametro è (0) e i preBuffer
parametri e postBuffer
per impostazione predefinita sono null
.UseDefaultWorkerThread Se fileName
si trova nella directory locale, può essere identificato solo con 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. In caso contrario SendFile , viene generata 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 di blocco, SendFile può essere completato correttamente prima dell'invio dell'intero file. Non esiste alcuna garanzia 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 indica che il sistema sottostante ha avuto spazio per memorizzare nel buffer i dati per un invio di rete.
Nota
Se si riceve un SocketExceptionoggetto , 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.
Nota
Questo membro genera informazioni di traccia quando viene abilitata la funzionalità di traccia di rete nell'applicazione in uso. 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
Invia il file fileName
e i buffer di dati a un oggetto Socket connesso usando il valore di TransmitFileOptions specificato.
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 versioni successive.
-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.
Il parametro fileName
del file non è stato trovato.
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 . Viene utilizzata l'impostazione predefinita TransmitFileOptions .
// 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();
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 il file.
postBuffer
contiene dati che si desidera seguire il file. Se fileName
si trova nella directory di lavoro corrente, può essere identificato solo con 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 usare Accept per 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 di blocco, SendFile può essere completato correttamente prima dell'invio dell'intero file. Non esiste alcuna garanzia 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 indica che il sistema sottostante ha avuto spazio per memorizzare nel buffer i dati per un invio di rete.
Nota
Se si riceve un SocketExceptionoggetto , 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.
Nota
Questo membro genera informazioni di traccia quando viene abilitata la funzionalità di traccia di rete nell'applicazione in uso. 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
Invia il file fileName
e i buffer di dati a un oggetto Socket connesso usando il valore di TransmitFileOptions specificato.
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 che contiene 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 di 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.
Il parametro fileName
del file non è stato trovato.
Si è verificato un errore durante il tentativo di accesso al socket.