Sdílet prostřednictvím


Socket.BeginSendFile Metoda

Definice

Odešle soubor asynchronně do připojeného Socket objektu.

Přetížení

Name Description
BeginSendFile(String, AsyncCallback, Object)

Odešle soubor fileName do připojeného Socket objektu pomocí příznaku UseDefaultWorkerThread .

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
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í odeslá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 Taskzákladech.

Toto přetížení odešle soubor fileName přes soket. 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 .

Můžete předat zpětné volání, které implementuje AsyncCallback , BeginSendFile aby bylo možné dostávat oznámení o dokončení operace. Všimněte si, že pokud podkladový síťový zásobník dokončí operaci synchronně, bude zpětné volání spuštěno přímo během volání BeginSendFile. V tomto případě bude vlastnost vrácena CompletedSynchronously nastavena tak, aby IAsyncResult indikovat, true že metoda byla dokončena synchronně. AsyncState Použijte vlastnost IAsyncResult k získání objektu stavu předaného metoděBeginSendFile.

Operace BeginSendFile musí být dokončena voláním EndSendFile metody. Obvykle je metoda vyvolána delegátem AsyncCallback . EndSendFile zablokuje volající vlákno, dokud se operace nedokončila.

I když jsou určené pro protokoly orientované na připojení, BeginSendFile funguje také pro protokoly bez připojení za předpokladu, že nejprve zavoláte Connect nebo BeginConnect metodu pro 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 se zobrazí SocketException výjimka, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu 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.

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í konkrétního kontextu (konkrétní asynchronní Socket metoda, konkrétní Socket instance a konkrétní zpětné volání), následné použití tohoto kontextu uvidí zlepšení výkonu.

Platí pro

BeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object)

Zdroj:
Socket.cs
Zdroj:
Socket.cs
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ý 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.

callback
AsyncCallback

Delegát AsyncCallback , který má být vyvolán při 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 Taskzákladech.

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 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 .

Parametr flags poskytuje další informace o přenosu souborů. Další informace o použití tohoto parametru naleznete v tématu TransmitFileOptions.

Můžete předat zpětné volání, které implementuje AsyncCallback , BeginSendFile aby bylo možné dostávat oznámení o dokončení operace. Všimněte si, že pokud podkladový síťový zásobník dokončí operaci synchronně, bude zpětné volání spuštěno přímo během volání BeginSendFile. V tomto případě bude vlastnost vrácena CompletedSynchronously nastavena tak, aby IAsyncResult indikovat, true že metoda byla dokončena synchronně. AsyncState Použijte vlastnost IAsyncResult k získání objektu stavu předaného metoděBeginSendFile.

Operace BeginSendFile musí být dokončena voláním EndSendFile metody. Metoda je obvykle vyvolána zadaným AsyncCallback delegátem. EndSendFile zablokuje volající vlákno, dokud se operace nedokončila.

I když jsou určené pro protokoly orientované na připojení, BeginSendFile funguje také pro protokoly bez připojení za předpokladu, že nejprve zavoláte Connect nebo BeginConnect metodu pro 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 se zobrazí SocketException výjimka, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu 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.

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í konkrétního kontextu (konkrétní asynchronní Socket metoda, konkrétní Socket instance a konkrétní zpětné volání), následné použití tohoto kontextu uvidí zlepšení výkonu.

Platí pro