Socket.BeginSendFile 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 asynchronně do připojeného Socket objektu.
Přetížení
BeginSendFile(String, AsyncCallback, Object) |
Odešle soubor |
BeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object) |
Odešle soubor a vyrovnávací paměti dat asynchronně do připojeného Socket objektu. |
BeginSendFile(String, AsyncCallback, Object)
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
Odešle soubor fileName
do připojeného Socket objektu pomocí příznaku UseDefaultWorkerThread .
public:
IAsyncResult ^ BeginSendFile(System::String ^ fileName, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSendFile (string fileName, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendFile (string? fileName, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendFile (string fileName, AsyncCallback callback, object state);
member this.BeginSendFile : string * AsyncCallback * obj -> IAsyncResult
Public Function BeginSendFile (fileName As String, callback As AsyncCallback, state As Object) As IAsyncResult
Parametry
- fileName
- String
Řetězec, který obsahuje cestu a název souboru k odeslání. Tento parametr může být null
.
- callback
- AsyncCallback
Delegát.AsyncCallback
- state
- Object
Objekt, který obsahuje informace o stavu pro tento požadavek.
Návraty
Objekt IAsyncResult , který představuje asynchronní odesílání.
Výjimky
Objekt Socket byl uzavřen.
Soket není připojen ke vzdálenému hostiteli.
Soubor fileName
nebyl nalezen.
Pouze rozhraní .NET Framework a .NET 5 a starší: Při pokusu o přístup k soketu došlo k chybě. Viz část s poznámkami níže.
Poznámky
Důležité
Toto je rozhraní API pro kompatibilitu. Pro nový vývoj nedoporučujeme používat metody APM (Begin*
a End*
). Místo toho použijte ekvivalenty založené na Task
.
Toto přetížení odešle soubor fileName
přes soket. Pokud fileName
je soubor v místním adresáři, může být označen pouze 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). Pokud se soubor nenajde, vyvolá se výjimka FileNotFoundException .
Zpětné volání, které se implementuje AsyncCallback do BeginSendFile , můžete předat, abyste dostali oznámení o dokončení operace. Všimněte si, že pokud podkladová síťová sada dokončí operaci synchronně, provede se zpětné volání vložené během volání .BeginSendFile V tomto případě CompletedSynchronously bude vlastnost vrácena IAsyncResult nastavena na , true
aby bylo možné označit, že metoda byla dokončena synchronně. AsyncState K získání objektu stavu předaného BeginSendFile metodě použijte vlastnost IAsyncResult .
Operace BeginSendFile musí být dokončena voláním EndSendFile metody . Obvykle je metoda vyvolána delegátem AsyncCallback . EndSendFile až do dokončení operace zablokuje volající vlákno.
I když jsou určeny pro protokoly orientované na připojení, BeginSendFile funguje také pro protokoly bez připojení, za předpokladu, že nejprve zavoláte metodu Connect nebo BeginConnect k vytvoření výchozího vzdáleného hostitele. U protokolů bez připojení musíte mít jistotu, že velikost souboru nepřekračuje maximální velikost paketů příslušného poskytovatele služeb. Pokud ano, datagram se neodesílají a BeginSendFile vyvolá SocketException výjimku.
Poznámka
Pokud dojde k výjimce SocketException , použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby.
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.
Poznámka
Kontext spuštění (kontext zabezpečení, zosobněný uživatel a kontext volání) se ukládá do mezipaměti pro asynchronní Socket metody. Po prvním použití určitého kontextu (konkrétní asynchronní Socket metoda, konkrétní Socket instance a konkrétní zpětné volání) dojde při dalších použitích tohoto kontextu ke zlepšení výkonu.
Platí pro
BeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object)
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
Odešle soubor a vyrovnávací paměti dat asynchronně do připojeného Socket objektu.
public:
IAsyncResult ^ BeginSendFile(System::String ^ fileName, cli::array <System::Byte> ^ preBuffer, cli::array <System::Byte> ^ postBuffer, System::Net::Sockets::TransmitFileOptions flags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSendFile (string? fileName, byte[]? preBuffer, byte[]? postBuffer, System.Net.Sockets.TransmitFileOptions flags, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendFile (string fileName, byte[] preBuffer, byte[] postBuffer, System.Net.Sockets.TransmitFileOptions flags, AsyncCallback callback, object state);
member this.BeginSendFile : string * byte[] * byte[] * System.Net.Sockets.TransmitFileOptions * AsyncCallback * obj -> IAsyncResult
Public Function BeginSendFile (fileName As String, preBuffer As Byte(), postBuffer As Byte(), flags As TransmitFileOptions, callback As AsyncCallback, state As Object) As IAsyncResult
Parametry
- fileName
- String
Řetězec, který obsahuje cestu a název souboru, který má být odeslán. 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.
- callback
- AsyncCallback
Delegát AsyncCallback , který má být vyvolán po dokončení této operace. Tento parametr může být null
.
- state
- Object
Uživatelem definovaný objekt, který obsahuje informace o stavu pro tento požadavek. Tento parametr může být null
.
Návraty
Objekt IAsyncResult , který představuje asynchronní operaci.
Výjimky
Objekt Socket byl uzavřen.
Pouze rozhraní .NET Framework a .NET 5 a starší: Při pokusu o přístup k soketu došlo k chybě. Viz část s poznámkami níže.
Operační systém není Windows NT nebo novější.
-nebo-
Soket není připojen ke vzdálenému hostiteli.
Soubor fileName
nebyl nalezen.
Poznámky
Důležité
Toto je rozhraní API pro kompatibilitu. Pro nový vývoj nedoporučujeme používat metody APM (Begin*
a End*
). Místo toho použijte ekvivalenty založené na Task
.
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 vytvořit. postBuffer
obsahuje data, která chcete sledovat v souboru. Pokud fileName
je soubor v místním adresáři, může být označen pouze 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). Pokud se soubor nenajde, vyvolá se výjimka FileNotFoundException .
Parametr flags
poskytuje další informace o přenosu souborů. Další informace o použití tohoto parametru najdete v tématu TransmitFileOptions.
Zpětné volání, které se implementuje AsyncCallback do BeginSendFile , můžete předat, abyste dostali oznámení o dokončení operace. Všimněte si, že pokud podkladová síťová sada dokončí operaci synchronně, provede se zpětné volání vložené během volání .BeginSendFile V tomto případě CompletedSynchronously bude vlastnost vrácena IAsyncResult nastavena na , true
aby bylo možné označit, že metoda byla dokončena synchronně. AsyncState K získání objektu stavu předaného BeginSendFile metodě použijte vlastnost IAsyncResult .
Operace BeginSendFile musí být dokončena voláním EndSendFile metody . Metoda je obvykle vyvolána poskytnutým AsyncCallback delegátem. EndSendFile až do dokončení operace zablokuje volající vlákno.
I když jsou určeny pro protokoly orientované na připojení, BeginSendFile funguje také pro protokoly bez připojení, za předpokladu, že nejprve zavoláte metodu Connect nebo BeginConnect k vytvoření výchozího vzdáleného hostitele. U protokolů bez připojení musíte mít jistotu, že velikost souboru nepřekračuje maximální velikost paketů příslušného poskytovatele služeb. Pokud ano, datagram se neodesílají a BeginSendFile vyvolá SocketException výjimku.
Poznámka
Pokud dojde k výjimce SocketException , použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby.
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.
Poznámka
Kontext spuštění (kontext zabezpečení, zosobněný uživatel a kontext volání) se ukládá do mezipaměti pro asynchronní Socket metody. Po prvním použití určitého kontextu (konkrétní asynchronní Socket metoda, konkrétní Socket instance a konkrétní zpětné volání) dojde při dalších použitích tohoto kontextu ke zlepšení výkonu.
Platí pro
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro