Socket.BeginReceiveMessageFrom Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Začne asynchronně přijímat zadaný počet bajtů dat do zadaného umístění vyrovnávací paměti dat pomocí zadaného SocketFlagsa uloží koncový bod a informace o paketu.
public:
IAsyncResult ^ BeginReceiveMessageFrom(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginReceiveMessageFrom(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceiveMessageFrom(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, AsyncCallback callback, object state);
member this.BeginReceiveMessageFrom : byte[] * int * int * System.Net.Sockets.SocketFlags * EndPoint * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceiveMessageFrom (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef remoteEP As EndPoint, callback As AsyncCallback, state As Object) As IAsyncResult
Parametry
- offset
- Int32
Pozice založená na nule v parametru buffer , do kterého se mají data ukládat.
- size
- Int32
Počet bajtů, které se mají přijmout.
- socketFlags
- SocketFlags
Bitové kombinace SocketFlags hodnot.
- remoteEP
- EndPoint
Odkaz na stejný EndPoint typ jako koncový bod vzdáleného hostitele, který se má aktualizovat při synchronním příjmu.
- callback
- AsyncCallback
Delegát.AsyncCallback
- state
- Object
Objekt, který obsahuje informace o stavu pro tento požadavek.
Návraty
Odkaz IAsyncResult na asynchronní čtení.
Výjimky
Pouze rozhraní .NET Framework a .NET 5 a starší: Při pokusu o přístup k soketu došlo k chybě.
offset je menší než 0.
nebo
offset je větší než délka buffer.
nebo
size je menší než 0.
nebo
size je větší než délka buffer minus hodnota parametru offset .
Ta Socket byla uzavřena.
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.
Můžete předat zpětné volání, které implementuje AsyncCallback , BeginReceiveMessageFrom 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í BeginReceiveMessageFrom. 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ěBeginReceiveMessageFrom.
Asynchronní BeginReceiveMessageFrom operace musí být dokončena voláním EndReceiveMessageFrom metody. Obvykle je metoda vyvolána delegátem AsyncCallback . EndReceiveMessageFrom zablokuje volající vlákno, dokud se operace nedokončila.
Pokud chcete zrušit čekající operaci BeginReceiveMessageFrom, zavolejte metodu Close .
Tato metoda načte data do parametru buffer a zachycuje koncový bod vzdáleného hostitele, ze kterého se data odesílají, a také informace o přijatém paketu. Informace o načtení tohoto koncového bodu najdete v EndReceiveMessageFromtématu . Tato metoda je nejužitečnější, pokud chcete asynchronně přijímat datagramy bez připojení z neznámého hostitele nebo více hostitelů.
Poznámka:
Pokud se zobrazí kód SocketExceptionchyby, 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.