Socket.BeginReceiveFrom Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Börjar asynkront ta emot data från en angiven nätverksenhet.
public:
IAsyncResult ^ BeginReceiveFrom(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 BeginReceiveFrom(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceiveFrom(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, AsyncCallback callback, object state);
member this.BeginReceiveFrom : byte[] * int * int * System.Net.Sockets.SocketFlags * EndPoint * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceiveFrom (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef remoteEP As EndPoint, callback As AsyncCallback, state As Object) As IAsyncResult
Parametrar
- offset
- Int32
Den nollbaserade positionen i parametern buffer där data ska lagras.
- size
- Int32
Antalet byte som ska ta emot.
- socketFlags
- SocketFlags
En bitvis kombination av SocketFlags värdena.
- remoteEP
- EndPoint
En referens till en EndPoint av samma typ som slutpunkten för fjärrvärden som ska uppdateras vid synkron mottagning.
- callback
- AsyncCallback
Ombudet AsyncCallback .
- state
- Object
Ett objekt som innehåller tillståndsinformation för den här begäran.
Returer
En IAsyncResult som refererar till den asynkrona läsningen.
Undantag
endast .NET Framework: Ett fel uppstod vid försök att komma åt socketen.
offset är mindre än 0.
-eller-
offset är större än längden på buffer.
-eller-
size är mindre än 0.
-eller-
size är större än längden buffer på minus värdet för parametern offset .
Har Socket stängts.
En anropare högre i anropsstacken har inte behörighet för den begärda åtgärden.
Kommentarer
Important
Det här är ett kompatibilitets-API. Vi rekommenderar inte att du använder APM-metoderna (Begin* och End*) för ny utveckling. Använd i stället de Task-baserade motsvarigheterna.
Du kan skicka ett återanrop som implementeras AsyncCallback till BeginReceiveFrom för att få ett meddelande om att åtgärden har slutförts. Observera att om den underliggande nätverksstacken slutför åtgärden synkront körs återanropet infogat under anropet till BeginReceiveFrom. I det här fallet CompletedSynchronously anges egenskapen för den returnerade IAsyncResult till för true att indikera att metoden slutfördes synkront.
AsyncState Använd egenskapen för IAsyncResult att hämta tillståndsobjektet som skickas BeginReceiveFrom till metoden.
Den asynkrona BeginReceiveFrom åtgärden måste slutföras genom att anropa EndReceiveFrom metoden. Metoden anropas vanligtvis av ombudet AsyncCallback . EndReceiveFrom blockerar den anropande tråden tills åtgärden har slutförts.
Den här metoden läser in data i parametern buffer och avbildar fjärrvärdens slutpunkt från vilken data skickas. Information om hur du hämtar den här slutpunkten finns i EndReceiveFrom. Den här metoden är mest användbar om du tänker ta emot anslutningslösa datagram asynkront från en okänd värd eller flera värdar. I dessa fall BeginReceiveFrom läser du det första kodade datagrammet som tas emot i den lokala nätverksbufferten. Om datagrammet som du får är större än storleken på bufferBeginReceiveFrom fyller buffer metoden med så mycket av meddelandet som möjligt och genererar en SocketException. Om du använder ett opålitligt protokoll går överskottsdata förlorade. Om du använder ett tillförlitligt protokoll behålls överskottsdata av tjänstleverantören och du kan hämta dem genom att anropa BeginReceiveFrom metoden med en tillräckligt stor buffert.
För att garantera att fjärrvärdens slutpunkt alltid returneras bör ett program uttryckligen binda Socket till en lokal slutpunkt med hjälp av Bind metoden och sedan anropa SetSocketOption metoden med parametern optionLevel inställd på IP eller IPv6 efter behov, parametern optionName inställd på PacketInformationoch parametern optionValue för att aktivera det här alternativet innan metoden anropas BeginReceiveFrom . Annars är det möjligt att fjärrvärdens slutpunkt inte returneras när avsändaren har skickat ett antal datagram innan mottagaren har anropat BeginReceiveFrom metoden.
Även om BeginReceiveFrom det är avsett för anslutningslösa protokoll kan du även använda ett anslutningsorienterat protokoll. Om du väljer att göra det måste du först antingen upprätta en fjärrvärdanslutning genom att anropa Connect / BeginConnect metoden eller acceptera en inkommande anslutningsbegäran genom att anropa Accept metoden eller BeginAccept . Om du anropar BeginReceiveFrom metoden innan du upprättar eller accepterar en anslutning får du en SocketException. Du kan också upprätta en standardvärd för ett anslutningslöst protokoll innan du anropar BeginReceiveFrom metoden.
Parametern remoteEp
Med anslutningsorienterade socketar BeginReceiveFrom läser du så mycket data som är tillgängligt upp till det antal byte som anges av parametern size .
Om du vill avbryta en väntande BeginReceiveFromanropar du Close metoden.
Note
Om du får en SocketExceptionanvänder du SocketException.ErrorCode egenskapen för att hämta den specifika felkoden.
Note
Den här medlemmen matar ut spårningsinformation när du aktiverar nätverksspårning i ditt program. Mer information finns i Network Tracing in .NET Framework.
Note
Körningskontexten (säkerhetskontexten, den personifierade användaren och den anropande kontexten) cachelagras för de asynkrona Socket metoderna. Efter den första användningen av en viss kontext (en specifik asynkron Socket metod, en specifik Socket instans och en specifik motringning) kommer efterföljande användning av den kontexten att se en prestandaförbättring.