Socket.ReceiveMessageFromAsync Metoda

Definice

Přetížení

ReceiveMessageFromAsync(SocketAsyncEventArgs)

Začne asynchronně přijímat zadaný počet bajtů dat do zadaného umístění ve vyrovnávací paměti dat pomocí zadaného SocketFlagsa ukládá koncové body a informace o paketech.

ReceiveMessageFromAsync(ArraySegment<Byte>, EndPoint)

Přijme data a vrátí další informace o odesílateli zprávy.

ReceiveMessageFromAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

Přijme data a vrátí další informace o odesílateli zprávy.

ReceiveMessageFromAsync(Memory<Byte>, EndPoint, CancellationToken)

Přijme data a vrátí další informace o odesílateli zprávy.

ReceiveMessageFromAsync(Memory<Byte>, SocketFlags, EndPoint, CancellationToken)

Přijme data a vrátí další informace o odesílateli zprávy.

ReceiveMessageFromAsync(SocketAsyncEventArgs)

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

Začne asynchronně přijímat zadaný počet bajtů dat do zadaného umístění ve vyrovnávací paměti dat pomocí zadaného SocketFlagsa ukládá koncové body a informace o paketech.

public:
 bool ReceiveMessageFromAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool ReceiveMessageFromAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.ReceiveMessageFromAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function ReceiveMessageFromAsync (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 se vyvolá po dokončení operace.

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

Výjimky

Hodnota RemoteEndPoint nesmí být null.

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

Poznámky

Metoda se ReceiveMessageFromAsync primárně používá k příjmu dat zpráv na soketu bez připojení. Místní adresa soketu musí být známá. Tuto metodu lze použít pouze s datagramem a nezpracovanými sokety. Soket musí být inicializován s typem soketu nastaveným na Dgram nebo Raw před voláním této metody. To lze provést při vytváření soketu pomocí Socket.

Volající musí vlastnost nastavit SocketAsyncEventArgs.RemoteEndPoint na EndPoint stejný typ jako koncový bod vzdáleného hostitele. Vlastnost se po úspěšném přijetí aktualizuje na skutečný vzdálený koncový bod.

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

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

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. Vlastnosti SocketAsyncEventArgs.Count a SocketAsyncEventArgs.Offset určují, kam se ve vyrovnávací paměti data umístí a jaké množství dat jsou.

Metoda ReceiveMessageFromAsync automaticky nastaví PacketInformation možnost soketu na true první zavolání pro danou Socket. Objekt však bude platný pouze pro pakety, IPPacketInformation které přijdou do místního počítače po nastavení možnosti soketu. Pokud je soket odeslán pakety mezi tím, když je soket vázán na místní koncový bod (explicitně Bind metodou nebo implicitně některou z Connectmetod , ConnectAsync, SendTonebo SendToAsync ) a prvním voláním ReceiveMessageFromAsync metody, volání ReceiveMessageFromAsync metody způsobí neplatné IPPacketInformation objekty pro tyto pakety.

Aby se zajistilo, že jsou všechny IPPacketInformation objekty platné, měla by aplikace nastavit možnost soketu PacketInformation na hodnotu předtrue tím, než je svázaná s místním koncovým bodem pomocí SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean) metody .

Aplikace může výsledné IPPacketInformation objekty prozkoumat, pokud potřebuje zjistit, jestli byl datagram odeslán pomocí adresy jednosměrového vysílání, vícesměrového vysílání nebo všesměrového vysílání.

Viz také

Platí pro

ReceiveMessageFromAsync(ArraySegment<Byte>, EndPoint)

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

Přijme data a vrátí další informace o odesílateli zprávy.

public:
 System::Threading::Tasks::Task<System::Net::Sockets::SocketReceiveMessageFromResult> ^ ReceiveMessageFromAsync(ArraySegment<System::Byte> buffer, System::Net::EndPoint ^ remoteEndPoint);
public System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveMessageFromResult> ReceiveMessageFromAsync (ArraySegment<byte> buffer, System.Net.EndPoint remoteEndPoint);
member this.ReceiveMessageFromAsync : ArraySegment<byte> * System.Net.EndPoint -> System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveMessageFromResult>
Public Function ReceiveMessageFromAsync (buffer As ArraySegment(Of Byte), remoteEndPoint As EndPoint) As Task(Of SocketReceiveMessageFromResult)

Parametry

buffer
ArraySegment<Byte>

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

remoteEndPoint
EndPoint

Koncový bod stejného typu jako koncový bod vzdáleného hostitele.

Návraty

Asynchronní úloha, která se dokončí s SocketReceiveMessageFromResult počtem přijatých bajtů a dalšími informacemi o odesílajícím hostiteli.

Výjimky

Objekt Socket byl uzavřen.

remoteEndPoint je null.

Před provedením této operace je nutné volat metodu Bind.

Platí pro

ReceiveMessageFromAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

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

Přijme data a vrátí další informace o odesílateli zprávy.

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

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.

remoteEndPoint
EndPoint

Koncový bod stejného typu jako koncový bod vzdáleného hostitele.

Návraty

Asynchronní úloha, která se dokončí s SocketReceiveMessageFromResult počtem přijatých bajtů a dalšími informacemi o odesílajícím hostiteli.

Výjimky

Objekt Socket byl uzavřen.

remoteEndPoint je null.

Před provedením této operace je nutné volat metodu Bind.

Platí pro

ReceiveMessageFromAsync(Memory<Byte>, EndPoint, CancellationToken)

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

Přijme data a vrátí další informace o odesílateli zprávy.

public System.Threading.Tasks.ValueTask<System.Net.Sockets.SocketReceiveMessageFromResult> ReceiveMessageFromAsync (Memory<byte> buffer, System.Net.EndPoint remoteEndPoint, System.Threading.CancellationToken cancellationToken = default);
member this.ReceiveMessageFromAsync : Memory<byte> * System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<System.Net.Sockets.SocketReceiveMessageFromResult>
Public Function ReceiveMessageFromAsync (buffer As Memory(Of Byte), remoteEndPoint As EndPoint, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of SocketReceiveMessageFromResult)

Parametry

buffer
Memory<Byte>

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

remoteEndPoint
EndPoint

Koncový bod stejného typu jako koncový bod vzdáleného hostitele.

cancellationToken
CancellationToken

Token zrušení, který lze použít k signalizaci asynchronní operace, by se měl zrušit.

Návraty

Asynchronní úloha, která se dokončí s SocketReceiveMessageFromResult počtem přijatých bajtů a dalšími informacemi o odesílajícím hostiteli.

Výjimky

Objekt Socket byl uzavřen.

remoteEndPoint je null.

Před provedením této operace je nutné volat metodu Bind.

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

Platí pro

ReceiveMessageFromAsync(Memory<Byte>, SocketFlags, EndPoint, CancellationToken)

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

Přijme data a vrátí další informace o odesílateli zprávy.

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

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.

remoteEndPoint
EndPoint

Koncový bod stejného typu jako koncový bod vzdáleného hostitele.

cancellationToken
CancellationToken

Token zrušení, který lze použít k signalizaci asynchronní operace, by se měl zrušit.

Návraty

Asynchronní úloha, která se dokončí s SocketReceiveMessageFromResult počtem přijatých bajtů a dalšími informacemi o odesílajícím hostiteli.

Výjimky

Objekt Socket byl uzavřen.

remoteEndPoint je null.

Před provedením této operace je nutné volat metodu Bind.

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

Platí pro