Sdílet prostřednictvím


Socket.ReceiveMessageFromAsync Metoda

Definice

Přetížení

Name Description
ReceiveMessageFromAsync(SocketAsyncEventArgs)

Začne asynchronně přijímat zadaný počet bajtů dat do zadaného umístění v datové vyrovnávací paměti pomocí zadaného SocketFlagsa ukládá koncový bod 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
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Začne asynchronně přijímat zadaný počet bajtů dat do zadaného umístění v datové vyrovnávací paměti pomocí zadaného SocketFlagsa ukládá koncový bod 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 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

Hodnota RemoteEndPoint nemůže být null.

Ta Socket byla uzavřena.

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

Poznámky

Tato ReceiveMessageFromAsync metoda se používá především 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 stejný EndPoint typ jako koncový bod vzdáleného hostitele. Vlastnost bude aktualizována při úspěšném přijetí na skutečný vzdálený koncový bod.

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 ReceiveMessageFromAsync 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ů 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 určují SocketAsyncEventArgs.Offset umístění dat ve vyrovnávací paměti a množství dat.

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

Aby se zajistilo, že všechny IPPacketInformation objekty jsou platné, měla by aplikace nastavit možnosttrue soketu PacketInformation před tím, než bude vázána na místní koncový bod pomocí SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean) metody.

Aplikace může prozkoumat výsledné IPPacketInformation objekty, pokud potřebuje vědět, jestli byl datagram odeslán pomocí jednosměrového vysílání, vícesměrového vysílání nebo adresy 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
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 počtem přijatých bajtů a dalšími informacemi SocketReceiveMessageFromResult 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
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 počtem přijatých bajtů a dalšími informacemi SocketReceiveMessageFromResult 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
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 počtem přijatých bajtů a dalšími informacemi SocketReceiveMessageFromResult 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 do vrácené úlohy.

Platí pro

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

Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
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 počtem přijatých bajtů a dalšími informacemi SocketReceiveMessageFromResult 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 do vrácené úlohy.

Platí pro