Socket.SendFile Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Odešle soubor a volitelná data synchronně do připojeného Socket.
Přetížení
SendFile(String) |
Odešle soubor |
SendFile(String, Byte[], Byte[], TransmitFileOptions) |
Odešle soubor |
SendFile(String, ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, TransmitFileOptions) |
Odešle soubor |
SendFile(String)
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
Odešle soubor fileName
připojenému Socket objektu s příznakem UseDefaultWorkerThread přenosu.
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)
Parametry
- fileName
- String
A String obsahující cestu a název souboru, který se má odeslat. Tento parametr může být null
.
Výjimky
Soket není připojený ke vzdálenému hostiteli.
Objekt Socket byl uzavřen.
Objekt Socket není v režimu blokování a nemůže přijmout toto synchronní volání.
Soubor fileName
nebyl nalezen.
Při pokusu o přístup k soketu došlo k chybě.
Příklady
Následující příklad kódu vytvoří a připojí soket a pak odešle soubor vzdálenému hostiteli. Soubor "test.txt" se nachází v kořenovém adresáři místního počítače.
// 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();
Poznámky
Toto přetížení odešle soubor fileName
do připojeného soketu. Parametr flags
má UseDefaultWorkerThread výchozí hodnotu (0) a preBuffer
parametry a postBuffer
výchozí hodnotu null
. Pokud fileName
je v místním adresáři, může být označen pouze názvem souboru, jinak musí být zadána úplná cesta a název souboru. Zástupné é (".. \\myfile.txt") a názvy sdílených složek UNC ("\\\shared directory\\myfile.txt") jsou podporovány. Pokud soubor není nalezen, vyvolá se výjimka FileNotFoundException .
Tato metoda používá funkci, která TransmitFile
se nachází v rozhraní API Windows Sockets 2. Další informace o TransmitFile
funkci a jejích příznakech najdete v dokumentaci k rozhraní Windows Sockets .
SendFile synchronně odešle soubor vzdálenému hostiteli zadanému Connect v metodě nebo Accept . SendFile lze použít pro protokoly orientované na připojení i pro protokoly bez připojení.
Pokud používáte protokol bez připojení, musíte před voláním této metody volat Connect , jinak SendFile vyvolá SocketException výjimku. Pokud používáte protokol orientovaný na připojení, musíte buď použít Connect k navázání připojení ke vzdálenému hostiteli, nebo použít Accept k přijetí příchozího připojení.
Pokud používáte protokol orientovaný na připojení, SendFile blokuje se až do odeslání souboru. V režimu SendFile odblokování se může úspěšně dokončit před odesláním celého souboru. Neexistuje žádná záruka, že se odeslaná data zobrazí v síti okamžitě. Za účelem zvýšení efektivity sítě může základní systém zpozdit přenos, dokud se neshromáždí významné množství odchozích dat. Úspěšné dokončení SendFile metody znamená, že základní systém měl prostor pro ukládání dat do vyrovnávací paměti pro odeslání do sítě.
Poznámka
Pokud se zobrazí SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, projděte si podrobný popis chyby v dokumentaci k rozhraní API windows Sockets verze 2 .
Poznámka
Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.
Platí pro
SendFile(String, Byte[], Byte[], TransmitFileOptions)
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
Odešle soubor fileName
a vyrovnávací paměti dat do připojeného Socket objektu pomocí zadané TransmitFileOptions hodnoty.
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)
Parametry
- fileName
- String
Cesta a název souboru, který se má odeslat. Tento parametr může být null
.
- preBuffer
- Byte[]
Data, která se mají odeslat před odesláním souboru. Tento parametr může být null
.
- postBuffer
- Byte[]
Data, která se mají odeslat po odeslání souboru. Tento parametr může být null
.
- flags
- TransmitFileOptions
Bitové kombinace hodnot výčtu, která určuje způsob přenosu souboru.
Výjimky
Operační systém není systém Windows NT nebo novější.
-nebo-
Soket není připojený ke vzdálenému hostiteli.
Objekt Socket byl uzavřen.
Objekt Socket není v režimu blokování a nemůže přijmout toto synchronní volání.
Soubor fileName
nebyl nalezen.
Při pokusu o přístup k soketu došlo k chybě.
Příklady
Následující příklad kódu vytvoří a připojí soket. Soubor "test.txt" se nachází v kořenovém adresáři místního počítače. V tomto příkladu vytvoříme prebuffer a postbuffer dat a odešleme je na vzdáleného hostitele se souborem. Používají se výchozí hodnoty 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();
Poznámky
Toto přetížení vyžaduje název souboru, který chcete odeslat, a bitovou kombinaci TransmitFileOptions hodnot. Parametr preBuffer
obsahuje všechna data, která chcete před souborem předcházet.
postBuffer
obsahuje data, která chcete sledovat v souboru. Pokud fileName
je v aktuálním pracovním adresáři, může být identifikován pouze názvem souboru, jinak musí být zadána úplná cesta a název souboru. Zástupné é (".. \\myfile.txt") a názvy sdílených složek UNC ("\\\shared directory\\myfile.txt") jsou podporovány.
Parametr flags
poskytuje zprostředkovateli služby Window Sockets další informace o přenosu souborů. Další informace o použití tohoto parametru najdete v tématu TransmitFileOptions.
Tato metoda používá funkci, která TransmitFile
se nachází v rozhraní API Windows Sockets 2. Další informace o TransmitFile
funkci a jejích příznakech najdete v dokumentaci k rozhraní Windows Sockets .
SendFile synchronně odešle soubor vzdálenému hostiteli zadanému Connect v metodě nebo Accept . SendFile lze použít pro protokoly orientované na připojení i pro protokoly bez připojení.
Pokud používáte protokol bez připojení, musíte před voláním této metody volat Connect , jinak SendFile vyvolá SocketException. Pokud používáte protokol orientovaný na připojení, musíte buď použít Connect k navázání připojení ke vzdálenému hostiteli, nebo použít Accept k přijetí příchozího připojení.
Pokud používáte protokol orientovaný na připojení, blokuje se až SendFile do odeslání celého souboru. V režimu SendFile odblokování se může úspěšně dokončit před odesláním celého souboru. Neexistuje žádná záruka, že se odeslaná data zobrazí v síti okamžitě. Za účelem zvýšení efektivity sítě může základní systém zpozdit přenos, dokud se neshromáždí významné množství odchozích dat. Úspěšné dokončení SendFile metody znamená, že základní systém měl prostor pro ukládání dat do vyrovnávací paměti pro odeslání do sítě.
Poznámka
Pokud se zobrazí SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, projděte si podrobný popis chyby v dokumentaci k rozhraní API windows Sockets verze 2 .
Poznámka
Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.
Platí pro
SendFile(String, ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, TransmitFileOptions)
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
Odešle soubor fileName
a vyrovnávací paměti dat do připojeného Socket objektu pomocí zadané TransmitFileOptions hodnoty.
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)
Parametry
- fileName
- String
A String obsahující cestu a název souboru, který se má odeslat. Tento parametr může být null
.
- preBuffer
- ReadOnlySpan<Byte>
A ReadOnlySpan<T> obsahující data, která se mají odeslat před odesláním souboru. Tato vyrovnávací paměť může být prázdná.
- postBuffer
- ReadOnlySpan<Byte>
A ReadOnlySpan<T> obsahující data, která se mají odeslat po odeslání souboru. Tato vyrovnávací paměť může být prázdná.
- flags
- TransmitFileOptions
Jedna nebo více TransmitFileOptions hodnot.
Výjimky
Objekt Socket byl uzavřen.
Objekt Socket není připojen ke vzdálenému hostiteli.
Objekt Socket není v režimu blokování a nemůže přijmout toto synchronní volání.
Soubor fileName
nebyl nalezen.
Při pokusu o přístup k soketu došlo k chybě.