Sdílet prostřednictvím


Socket.ReceiveAsync Metoda

Definice

Přetížení

Name Description
ReceiveAsync(ArraySegment<Byte>)

Přijímá data z připojeného soketu.

ReceiveAsync(IList<ArraySegment<Byte>>)

Přijímá data z připojeného soketu.

ReceiveAsync(SocketAsyncEventArgs)

Zahájí asynchronní požadavek na příjem dat z připojeného Socket objektu.

ReceiveAsync(ArraySegment<Byte>, SocketFlags)

Přijímá data z připojeného soketu.

ReceiveAsync(IList<ArraySegment<Byte>>, SocketFlags)

Přijímá data z připojeného soketu.

ReceiveAsync(Memory<Byte>, CancellationToken)

Přijímá data z připojeného soketu.

ReceiveAsync(Memory<Byte>, SocketFlags, CancellationToken)

Přijímá data z připojeného soketu.

ReceiveAsync(ArraySegment<Byte>)

Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs

Přijímá data z připojeného soketu.

public:
 System::Threading::Tasks::Task<int> ^ ReceiveAsync(ArraySegment<System::Byte> buffer);
public System.Threading.Tasks.Task<int> ReceiveAsync(ArraySegment<byte> buffer);
member this.ReceiveAsync : ArraySegment<byte> -> System.Threading.Tasks.Task<int>
Public Function ReceiveAsync (buffer As ArraySegment(Of Byte)) As Task(Of Integer)

Parametry

buffer
ArraySegment<Byte>

Vyrovnávací paměť pro přijatá data.

Návraty

Úloha, která představuje asynchronní operaci příjmu. Hodnota jeho Result vlastnosti obsahuje celkový počet bajtů přečtených mezi buffer nulou (0) a počtem požadovaných bajtů. Výsledná hodnota je nula (0), pouze pokud byly požadovány nulové bajty nebo pokud nejsou k dispozici žádné další bajty, protože peer socket provedl řádné vypnutí. Pokud jsou požadovány nulové bajty, operace příjmu se mohou dokončit okamžitě nebo nemusí být dokončeny, dokud nebude k dispozici alespoň jeden bajt (ale bez využití jakýchkoli dat).

Výjimky

Ta Socket byla uzavřena.

Při pokusu o přístup k soketu došlo k chybě.

Platí pro

ReceiveAsync(IList<ArraySegment<Byte>>)

Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs

Přijímá data z připojeného soketu.

public:
 System::Threading::Tasks::Task<int> ^ ReceiveAsync(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers);
public System.Threading.Tasks.Task<int> ReceiveAsync(System.Collections.Generic.IList<ArraySegment<byte>> buffers);
member this.ReceiveAsync : System.Collections.Generic.IList<ArraySegment<byte>> -> System.Threading.Tasks.Task<int>
Public Function ReceiveAsync (buffers As IList(Of ArraySegment(Of Byte))) As Task(Of Integer)

Parametry

buffers
IList<ArraySegment<Byte>>

Seznam vyrovnávacích pamětí pro přijatá data.

Návraty

Úloha, která představuje asynchronní operaci příjmu. Hodnota jeho Result vlastnosti obsahuje celkový počet bajtů přečtených do vyrovnávací paměti mezi nulou (0) a počtem požadovaných bajtů. Výsledná hodnota je nula (0), pouze pokud byly požadovány nulové bajty nebo pokud nejsou k dispozici žádné další bajty, protože peer socket provedl řádné vypnutí. Pokud jsou požadovány nulové bajty, operace příjmu se mohou dokončit okamžitě nebo nemusí být dokončeny, dokud nebude k dispozici alespoň jeden bajt (ale bez využití jakýchkoli dat).

Výjimky

Parametr buffers měl hodnotu null.

Ta Socket byla uzavřena.

Při pokusu o přístup k soketu došlo k chybě.

Poznámky

Tato metoda ukládá do úlohy všechny výjimky bez použití, které může vyvolat synchronní protějšek metody. Pokud je výjimka uložena do vrácené úlohy, tato výjimka bude vyvolána, když je úkol očekáván. Výjimky použití, například ArgumentException, jsou stále vyvolány synchronně. V případě uložených výjimek se podívejte na výjimky vyvolané Receive(IList<ArraySegment<Byte>>).

Platí pro

ReceiveAsync(SocketAsyncEventArgs)

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Zahájí asynchronní požadavek na příjem dat z připojeného Socket objektu.

public:
 bool ReceiveAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs e);
member this.ReceiveAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function ReceiveAsync (e As SocketAsyncEventArgs) As Boolean

Parametry

e
SocketAsyncEventArgs

Objekt SocketAsyncEventArgs , který se má použít pro tuto asynchronní operaci soketu.

Návraty

true pokud operace vstupně-výstupní operace čeká na vyřízení. Událost Completed parametru e bude vyvolána po dokončení operace.

false pokud se vstupně-výstupní operace dokončila synchronně. V tomto případě Completed nebude vyvolána událost parametru e a e objekt předaný jako parametr může být zkoumán okamžitě po volání metody vrátí načíst výsledek operace.

Výjimky

Argument byl neplatný. Vlastnosti Buffer parametru BufferListe musí odkazovat na platné vyrovnávací paměti. Jedna nebo druhá z těchto vlastností může být nastavena, ale ne obě současně.

Operace soketu již probíhala pomocí objektu SocketAsyncEventArgs zadaného v parametru e .

Ta Socket byla uzavřena.

Při pokusu o přístup k soketu došlo k chybě.

Poznámky

Metoda ReceiveAsync se používá u připojených soketů nebo vázaných soketů bez připojení a slouží ke čtení příchozích dat. Místní adresa soketu musí být známá.

U vázaných soketů bez připojení tato funkce omezuje adresy, ze kterých jsou přijaté zprávy přijímány. Funkce vrací pouze zprávy ze vzdálené adresy zadané v připojení. Zprávy z jiných adres se bezobslužně zahodí.

Vlastnost SocketAsyncEventArgs.SocketFlags parametru e poskytuje zprostředkovatel služby Windows Sockets s dalšími informacemi o požadavku na čtení. Další informace o použití tohoto parametru naleznete v tématu System.Net.Sockets.SocketFlags.

K úspěšnému volání této metody jsou vyžadovány následující vlastnosti a události objektu System.Net.Sockets.SocketAsyncEventArgs :

Volající může před voláním SocketAsyncEventArgs.UserToken metody nastavit ReceiveAsync vlastnost na libovolný objekt stavu uživatele, aby informace byly v metodě zpětného volání dostupné. Pokud zpětné volání potřebuje více informací než jeden objekt, lze vytvořit malou třídu, která bude obsahovat další požadované informace o stavu jako členy.

U soketů ve stylu bajtů se příchozí data umístí do vyrovnávací paměti, dokud se vyrovnávací paměť nevyplní, připojení se zavře nebo se vyčerpají interně uložená data do vyrovnávací paměti.

U soketů orientovaných na zprávy se příchozí zpráva umístí do vyrovnávací paměti až do celkové velikosti vyrovnávací paměti přidružené k parametru e . Pokud je zpráva větší než vyrovnávací paměť, vyrovnávací paměť se vyplní první částí zprávy.

U soketů orientovaných ReceiveAsync na připojení může metoda označit řádné ukončení virtuálního okruhu jedním ze dvou způsobů, které závisí na tom, zda je soket datový proud bajtů nebo orientovaný na zprávy. U bajtů datových proudů nula bajtů, které byly přečteny, značí řádné uzavření a že žádné další bajty nebudou nikdy přečteny. U soketů orientovaných na zprávy, kde je často povolena nulová bajtová zpráva, SocketException se SocketAsyncEventArgs.SocketError nastavenou na nativní kód chyby Winsock WSAEDISCON (10101) slouží k označení odkladu uzavření. V každém případě, SocketException s nastavenou SocketAsyncEventArgs.SocketError na nativní winsock WSAECONNRESET kód chyby (10054) označuje, že došlo k přerušení uzavření.

Viz také

Platí pro

ReceiveAsync(ArraySegment<Byte>, SocketFlags)

Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs

Přijímá data z připojeného soketu.

public:
 System::Threading::Tasks::Task<int> ^ ReceiveAsync(ArraySegment<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags);
public System.Threading.Tasks.Task<int> ReceiveAsync(ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.ReceiveAsync : ArraySegment<byte> * System.Net.Sockets.SocketFlags -> System.Threading.Tasks.Task<int>
Public Function ReceiveAsync (buffer As ArraySegment(Of Byte), socketFlags As SocketFlags) As Task(Of Integer)

Parametry

buffer
ArraySegment<Byte>

Vyrovnávací paměť pro přijatá data.

socketFlags
SocketFlags

Bitové kombinace hodnot SocketFlags, které se použijí při příjmu dat.

Návraty

Úloha, která představuje asynchronní operaci příjmu. Hodnota jeho Result vlastnosti obsahuje celkový počet bajtů přečtených mezi buffer nulou (0) a počtem požadovaných bajtů. Výsledná hodnota je nula (0), pouze pokud byly požadovány nulové bajty nebo pokud nejsou k dispozici žádné další bajty, protože peer socket provedl řádné vypnutí. Pokud jsou požadovány nulové bajty, operace příjmu se mohou dokončit okamžitě nebo nemusí být dokončeny, dokud nebude k dispozici alespoň jeden bajt (ale bez využití jakýchkoli dat).

Výjimky

Ta Socket byla uzavřena.

Při pokusu o přístup k soketu došlo k chybě.

Platí pro

ReceiveAsync(IList<ArraySegment<Byte>>, SocketFlags)

Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs

Přijímá data z připojeného soketu.

public:
 System::Threading::Tasks::Task<int> ^ ReceiveAsync(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags);
public System.Threading.Tasks.Task<int> ReceiveAsync(System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);
member this.ReceiveAsync : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags -> System.Threading.Tasks.Task<int>
Public Function ReceiveAsync (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags) As Task(Of Integer)

Parametry

buffers
IList<ArraySegment<Byte>>

Seznam vyrovnávacích pamětí pro přijatá data.

socketFlags
SocketFlags

Bitové kombinace hodnot SocketFlags, které se použijí při příjmu dat.

Návraty

Úloha, která představuje asynchronní operaci příjmu. Hodnota jeho Result vlastnosti obsahuje celkový počet bajtů přečtených mezi buffer nulou (0) a počtem požadovaných bajtů. Výsledná hodnota je nula (0), pouze pokud byly požadovány nulové bajty nebo pokud nejsou k dispozici žádné další bajty, protože peer socket provedl řádné vypnutí. Pokud jsou požadovány nulové bajty, operace příjmu se mohou dokončit okamžitě nebo nemusí být dokončeny, dokud nebude k dispozici alespoň jeden bajt (ale bez využití jakýchkoli dat).

Výjimky

Parametr buffers měl hodnotu null.

Ta Socket byla uzavřena.

Při pokusu o přístup k soketu došlo k chybě.

Poznámky

Tato metoda ukládá do úlohy všechny výjimky bez použití, které může vyvolat synchronní protějšek metody. Pokud je výjimka uložena do vrácené úlohy, tato výjimka bude vyvolána, když je úkol očekáván. Výjimky použití, například ArgumentException, jsou stále vyvolány synchronně. V případě uložených výjimek se podívejte na výjimky vyvolané Receive(IList<ArraySegment<Byte>>, SocketFlags).

Platí pro

ReceiveAsync(Memory<Byte>, CancellationToken)

Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs

Přijímá data z připojeného soketu.

public System.Threading.Tasks.ValueTask<int> ReceiveAsync(Memory<byte> buffer, System.Threading.CancellationToken cancellationToken = default);
member this.ReceiveAsync : Memory<byte> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function ReceiveAsync (buffer As Memory(Of Byte), Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

Parametry

buffer
Memory<Byte>

Vyrovnávací paměť pro přijatá data.

cancellationToken
CancellationToken

Token zrušení, který lze použít ke zrušení asynchronní operace.

Návraty

A ValueTask<TResult> , který představuje asynchronní operaci příjmu. Hodnota jeho Result vlastnosti obsahuje celkový počet bajtů přečtených mezi buffer nulou (0) a počtem požadovaných bajtů. Výsledná hodnota je nula (0), pouze pokud byly požadovány nulové bajty nebo pokud nejsou k dispozici žádné další bajty, protože peer socket provedl řádné vypnutí. Pokud jsou požadovány nulové bajty, operace příjmu se mohou dokončit okamžitě nebo nemusí být dokončeny, dokud nebude k dispozici alespoň jeden bajt (ale bez využití jakýchkoli dat).

Výjimky

Ta Socket byla uzavřena.

Při pokusu o přístup k soketu došlo k chybě.

Token zrušení byl zrušen. Tato výjimka je uložena do vrácené úlohy.

Platí pro

ReceiveAsync(Memory<Byte>, SocketFlags, CancellationToken)

Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs

Přijímá data z připojeného soketu.

public System.Threading.Tasks.ValueTask<int> ReceiveAsync(Memory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Threading.CancellationToken cancellationToken = default);
member this.ReceiveAsync : Memory<byte> * System.Net.Sockets.SocketFlags * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function ReceiveAsync (buffer As Memory(Of Byte), socketFlags As SocketFlags, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

Parametry

buffer
Memory<Byte>

Vyrovnávací paměť pro přijatá data.

socketFlags
SocketFlags

Bitové kombinace hodnot SocketFlags, které se použijí při příjmu dat.

cancellationToken
CancellationToken

Token zrušení, který lze použít ke zrušení asynchronní operace.

Návraty

A ValueTask<TResult> , který představuje asynchronní operaci příjmu. Hodnota jeho Result vlastnosti obsahuje celkový počet bajtů přečtených mezi buffer nulou (0) a počtem požadovaných bajtů. Výsledná hodnota je nula (0), pouze pokud byly požadovány nulové bajty nebo pokud nejsou k dispozici žádné další bajty, protože peer socket provedl řádné vypnutí. Pokud jsou požadovány nulové bajty, operace příjmu se mohou dokončit okamžitě nebo nemusí být dokončeny, dokud nebude k dispozici alespoň jeden bajt (ale bez využití jakýchkoli dat).

Výjimky

Ta Socket byla uzavřena.

Při pokusu o přístup k soketu došlo k chybě.

Token zrušení byl zrušen. Tato výjimka je uložena do vrácené úlohy.

Platí pro