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ě připojenému Socket.
Přetížení
| Name | Description |
|---|---|
| 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
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
Odešle soubor fileName do připojeného 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. Soubortest.txtse 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 = 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. Výchozí flags hodnota parametru UseDefaultWorkerThread je (0) a preBuffer výchozí hodnota parametrů postBuffernull. Pokud fileName je v místním adresáři, může být identifikován pouze s názvem souboru. V opačném případě musí být zadána úplná cesta a název souboru. Zástupné cardy (".. \\myfile.txt") a názvy sdílených složek UNC ("\\\\shared directory\\myfile.txt") jsou podporovány. Pokud se soubor nenajde, vyvolá se výjimka FileNotFoundException .
Tato metoda používá TransmitFile funkci nalezenou 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 metodě. 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ď vytvořit Connect připojení vzdáleného hostitele, nebo použít Accept k přijetí příchozího připojení.
Pokud používáte protokol orientovaný na připojení, SendFile blokuje se 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. Není zaručeno, že se data, která odesíláte, zobrazí v síti okamžitě. Aby se zvýšila efektivita sítě, může základní systém zpozdit přenos, dokud se neshromáždí značné množství odchozích dat. Úspěšné dokončení SendFile metody znamená, že základní systém měl místo pro ukládání dat do vyrovnávací paměti pro odesílání sítě.
Poznámka:
Pokud se zobrazí kód SocketExceptionchyby, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Po získání tohoto kódu si přečtěte dokumentaci k chybě rozhraní API rozhraní WINDOWS Sockets verze 2 , kde najdete podrobný popis chyby.
Poznámka:
Tento člen vypíše informace o trasování, když ve své aplikaci povolíte trasování sítě. Další informace naleznete 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
- 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í 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. Soubortest.txtse nachází v kořenovém adresáři místního počítače. V tomto příkladu vytvoříme předem a postbuffer dat a odešleme je vzdálenému hostiteli se souborem. Použije se výchozí hodnota 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();
Poznámky
Toto přetížení vyžaduje název souboru, který chcete odeslat, a bitové kombinace TransmitFileOptions hodnot. Parametr preBuffer obsahuje všechna data, která chcete před souborem předcházet.
postBuffer obsahuje data, která chcete sledovat. Pokud fileName je v aktuálním pracovním adresáři, může být identifikován pouze s názvem souboru. V opačném případě musí být zadána úplná cesta a název souboru. Zástupné cardy (".. \\myfile.txt") a názvy sdílených složek UNC ("\\\\shared directory\\myfile.txt") jsou podporovány.
Parametr flags poskytuje zprostředkovatele služby Windows Sockets s dalšími informacemi o přenosu souborů. Další informace o použití tohoto parametru naleznete v tématu TransmitFileOptions.
Tato metoda používá TransmitFile funkci nalezenou 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 metodě. 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á výjimku SocketException. Pokud používáte protokol orientovaný na připojení, musíte buď vytvořit Connect 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 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. Není zaručeno, že se data, která odesíláte, zobrazí v síti okamžitě. Aby se zvýšila efektivita sítě, může základní systém zpozdit přenos, dokud se neshromáždí značné množství odchozích dat. Úspěšné dokončení SendFile metody znamená, že základní systém měl místo pro ukládání dat do vyrovnávací paměti pro odesílání sítě.
Poznámka:
Pokud se zobrazí kód SocketExceptionchyby, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Po získání tohoto kódu si přečtěte dokumentaci k chybě rozhraní API rozhraní WINDOWS Sockets verze 2 , kde najdete podrobný popis chyby.
Poznámka:
Tento člen vypíše informace o trasování, když ve své aplikaci povolíte trasování sítě. Další informace naleznete 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
- 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á mají být odeslána 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ě.