Udostępnij za pośrednictwem


Socket.ReceiveAsync Metoda

Definicja

Przeciążenia

ReceiveAsync(ArraySegment<Byte>)

Odbiera dane z podłączonego gniazda.

ReceiveAsync(IList<ArraySegment<Byte>>)

Odbiera dane z podłączonego gniazda.

ReceiveAsync(SocketAsyncEventArgs)

Rozpoczyna asynchroniczne żądanie odbierania danych z połączonego Socket obiektu.

ReceiveAsync(ArraySegment<Byte>, SocketFlags)

Odbiera dane z podłączonego gniazda.

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

Odbiera dane z podłączonego gniazda.

ReceiveAsync(Memory<Byte>, CancellationToken)

Odbiera dane z podłączonego gniazda.

ReceiveAsync(Memory<Byte>, SocketFlags, CancellationToken)

Odbiera dane z podłączonego gniazda.

ReceiveAsync(ArraySegment<Byte>)

Źródło:
Socket.Tasks.cs
Źródło:
Socket.Tasks.cs
Źródło:
Socket.Tasks.cs

Odbiera dane z podłączonego gniazda.

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>

Bufor odebranych danych.

Zwraca

Zadanie asynchroniczne, które kończy się liczbą odebranych bajtów.

Wyjątki

Została zamknięta Socket .

Wystąpił błąd podczas próby uzyskania dostępu do gniazda.

Dotyczy

ReceiveAsync(IList<ArraySegment<Byte>>)

Źródło:
Socket.Tasks.cs
Źródło:
Socket.Tasks.cs
Źródło:
Socket.Tasks.cs

Odbiera dane z podłączonego gniazda.

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

Lista buforów dla odebranych danych.

Zwraca

Zadanie asynchroniczne, które kończy się liczbą odebranych bajtów.

Wyjątki

Parametr buffers miał wartość null.

Została zamknięta Socket .

Wystąpił błąd podczas próby uzyskania dostępu do gniazda.

Uwagi

Ta metoda przechowuje w zadaniu wszystkie wyjątki inne niż użycie, które mogą zgłaszać synchroniczna odpowiednik metody. Jeśli wyjątek jest przechowywany w zwróconym zadaniu, ten wyjątek zostanie zgłoszony po oczekiwaniu na zadanie. Wyjątki użycia, takie jak ArgumentException, są nadal zgłaszane synchronicznie. Aby uzyskać informacje o przechowywanych wyjątkach, zobacz wyjątki zgłaszane przez Receive(IList<ArraySegment<Byte>>)usługę .

Dotyczy

ReceiveAsync(SocketAsyncEventArgs)

Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs

Rozpoczyna asynchroniczne żądanie odbierania danych z połączonego Socket obiektu.

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

Obiekt SocketAsyncEventArgs do użycia dla tej operacji asynchronicznego gniazda.

Zwraca

true jeśli operacja we/wy jest oczekująca. Zdarzenie Completed parametru e zostanie podniesione po zakończeniu operacji.

false jeśli operacja we/wy została ukończona synchronicznie. W takim przypadku Completed zdarzenie parametru e nie zostanie podniesione, a e obiekt przekazany jako parametr może zostać zbadany natychmiast po powrocie wywołania metody w celu pobrania wyniku operacji.

Wyjątki

Argument był nieprawidłowy. Właściwości Buffer lub BufferList parametru e muszą odwoływać się do prawidłowych buforów. Można ustawić jedną lub drugą z tych właściwości, ale nie obie w tym samym czasie.

Operacja gniazda była już w toku przy użyciu SocketAsyncEventArgs obiektu określonego w parametrze e .

Została zamknięta Socket .

Wystąpił błąd podczas próby uzyskania dostępu do gniazda.

Uwagi

Metoda ReceiveAsync jest używana na połączonych gniazdach lub powiązanych gniazdach bez połączenia i służy do odczytywania danych przychodzących. Adres lokalny gniazda musi być znany.

W przypadku powiązanych gniazd bez połączenia ta funkcja ogranicza adresy, z których odbierane komunikaty są akceptowane. Funkcja zwraca tylko komunikaty z adresu zdalnego określonego w połączeniu. Komunikaty z innych adresów są odrzucane w trybie dyskretnym.

Właściwość SocketAsyncEventArgs.SocketFlags parametru e udostępnia dostawcę usługi Windows Sockets z dodatkowymi informacjami o żądaniu odczytu. Aby uzyskać więcej informacji na temat używania tego parametru, zobacz System.Net.Sockets.SocketFlags.

Następujące właściwości i zdarzenia obiektu są wymagane do pomyślnego System.Net.Sockets.SocketAsyncEventArgs wywołania tej metody:

Obiekt wywołujący może ustawić SocketAsyncEventArgs.UserToken właściwość na dowolny obiekt stanu użytkownika żądany przed wywołaniem ReceiveAsync metody, aby informacje mogły zostać pobrane w metodzie wywołania zwrotnego. Jeśli wywołanie zwrotne wymaga więcej informacji niż pojedynczy obiekt, można utworzyć małą klasę, aby przechowywać inne wymagane informacje o stanie jako elementy członkowskie.

W przypadku gniazd typu strumienia bajtów dane przychodzące są umieszczane w buforze do momentu wypełnienia buforu, połączenie jest zamknięte lub wewnętrznie buforowane dane są wyczerpane.

W przypadku gniazd zorientowanych na komunikaty przychodzący komunikat jest umieszczany w buforze do całkowitego rozmiaru buforu skojarzonego z parametrem e . Jeśli komunikat jest większy niż bufor, bufor jest wypełniony pierwszą częścią komunikatu.

W przypadku gniazd ReceiveAsync zorientowanych na połączenie metoda może wskazywać na bezproblemowe zakończenie obwodu wirtualnego na jeden z dwóch sposobów, które zależą od tego, czy gniazdo jest strumieniem bajtowym, czy zorientowanym komunikatem. W przypadku strumieni bajtów odczytanych zero bajtów wskazuje na bezproblemowe zamknięcie i że nie będą odczytywane żadne bajty. W przypadku gniazd zorientowanych na komunikaty, gdzie komunikat o zerowej bajtach jest często dozwolony, SocketException element z SocketAsyncEventArgs.SocketError ustawionym natywnego kodu błędu Winsock WSAEDISCON (10101) jest używany do wskazania bezproblemowego zamknięcia. W każdym przypadku element SocketException z ustawionym natywnym kodem błędu SocketAsyncEventArgs.SocketError Winsock WSAECONNRESET (10054) wskazuje, że doszło do przerwania zamknięcia.

Zobacz też

Dotyczy

ReceiveAsync(ArraySegment<Byte>, SocketFlags)

Źródło:
Socket.Tasks.cs
Źródło:
Socket.Tasks.cs
Źródło:
Socket.Tasks.cs

Odbiera dane z podłączonego gniazda.

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>

Bufor odebranych danych.

socketFlags
SocketFlags

Bitowa kombinacja wartości SocketFlags, które będą używane podczas odbierania danych.

Zwraca

Zadanie asynchroniczne, które kończy się liczbą odebranych bajtów.

Wyjątki

Została zamknięta Socket .

Wystąpił błąd podczas próby uzyskania dostępu do gniazda.

Dotyczy

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

Źródło:
Socket.Tasks.cs
Źródło:
Socket.Tasks.cs
Źródło:
Socket.Tasks.cs

Odbiera dane z podłączonego gniazda.

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

Lista buforów dla odebranych danych.

socketFlags
SocketFlags

Bitowa kombinacja wartości SocketFlags, które będą używane podczas odbierania danych.

Zwraca

Zadanie asynchroniczne, które kończy się liczbą odebranych bajtów.

Wyjątki

Parametr buffers miał wartość null.

Została zamknięta Socket .

Wystąpił błąd podczas próby uzyskania dostępu do gniazda.

Uwagi

Ta metoda przechowuje w zadaniu wszystkie wyjątki inne niż użycie, które mogą zgłaszać synchroniczna odpowiednik metody. Jeśli wyjątek jest przechowywany w zwróconym zadaniu, ten wyjątek zostanie zgłoszony po oczekiwaniu na zadanie. Wyjątki użycia, takie jak ArgumentException, są nadal zgłaszane synchronicznie. Aby uzyskać informacje o przechowywanych wyjątkach, zobacz wyjątki zgłaszane przez Receive(IList<ArraySegment<Byte>>, SocketFlags)usługę .

Dotyczy

ReceiveAsync(Memory<Byte>, CancellationToken)

Źródło:
Socket.Tasks.cs
Źródło:
Socket.Tasks.cs
Źródło:
Socket.Tasks.cs

Odbiera dane z podłączonego gniazda.

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>

Bufor odebranych danych.

cancellationToken
CancellationToken

Token anulowania, który może służyć do anulowania operacji asynchronicznej.

Zwraca

Zadanie asynchroniczne, które kończy się liczbą odebranych bajtów.

Wyjątki

Została zamknięta Socket .

Wystąpił błąd podczas próby uzyskania dostępu do gniazda.

Token anulowania został anulowany. Ten wyjątek jest przechowywany w zwróconym zadaniu.

Dotyczy

ReceiveAsync(Memory<Byte>, SocketFlags, CancellationToken)

Źródło:
Socket.Tasks.cs
Źródło:
Socket.Tasks.cs
Źródło:
Socket.Tasks.cs

Odbiera dane z podłączonego gniazda.

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>

Bufor odebranych danych.

socketFlags
SocketFlags

Bitowa kombinacja wartości SocketFlags, które będą używane podczas odbierania danych.

cancellationToken
CancellationToken

Token anulowania, który może służyć do anulowania operacji asynchronicznej.

Zwraca

Zadanie asynchroniczne, które kończy się liczbą odebranych bajtów.

Wyjątki

Została zamknięta Socket .

Wystąpił błąd podczas próby uzyskania dostępu do gniazda.

Token anulowania został anulowany. Ten wyjątek jest przechowywany w zwróconym zadaniu.

Dotyczy