Socket.BeginSendTo 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.
Skickar data asynkront till en specifik fjärrvärd.
public:
IAsyncResult ^ BeginSendTo(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 BeginSendTo(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP, AsyncCallback callback, object state);
member this.BeginSendTo : byte[] * int * int * System.Net.Sockets.SocketFlags * System.Net.EndPoint * AsyncCallback * obj -> IAsyncResult
Public Function BeginSendTo (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, remoteEP As EndPoint, callback As AsyncCallback, state As Object) As IAsyncResult
Parametrar
- offset
- Int32
Den nollbaserade position buffer där data ska börja skickas.
- size
- Int32
Antalet byte som ska skickas.
- socketFlags
- SocketFlags
En bitvis kombination av SocketFlags värdena.
- 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 sändningen.
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 BeginSendTo 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 BeginSendTo. 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 BeginSendTo till metoden.
Åtgärden BeginSendTo måste slutföras genom att anropa EndSendTo metoden. Metoden anropas vanligtvis av det angivna AsyncCallback ombudet. EndSendTo blockerar den anropande tråden tills åtgärden har slutförts.
Om du använder ett anslutningsorienterat protokoll måste du först anropa Connectmetoden , BeginConnect, Accepteller BeginAccept eller BeginSendTo utlösa en SocketException.
BeginSendTo ignorerar parametern remoteEP och skickar data till den EndPoint som har upprättats Connecti metoden , BeginConnect, Accepteller BeginAccept .
Om du använder ett anslutningslöst protokoll behöver du inte upprätta en standardvärd med Connect metoden eller BeginConnect innan du anropar SendTo. Du behöver bara göra detta om du tänker anropa BeginSend metoden. Om du anropar Connect metoden eller BeginConnect innan du anropar SendToåsidosätter parametern endast den angivna standardvärden för den sändningsåtgärden remoteEP . Du behöver inte heller anropa Bind metoden. I det här fallet tilldelar den underliggande tjänstleverantören den lämpligaste lokala nätverksadressen och portnumret. Använd ett portnummer på noll om du vill att den underliggande tjänstleverantören ska välja en kostnadsfri port. Om du behöver identifiera den tilldelade lokala nätverksadressen och portnumret kan du använda LocalEndPoint egenskapen när EndSendTo metoden har slutförts.
Om du vill skicka data till en sändningsadress måste du först anropa SetSocketOption metoden och ange socketalternativet till SocketOptionName.Broadcast. -Du måste också vara säker på att storleken på bufferten inte överskrider den maximala paketstorleken för den underliggande tjänstleverantören. Om det gör det skickas inte datagrammet och EndSendTo genererar en SocketException.
Om du anger DontRoute flaggan som socketflags parameter dirigeras inte de data som du skickar.
Note
Om du får en SocketExceptionanvänder du SocketException.ErrorCode egenskapen för att hämta den specifika felkoden. När du har fått den här koden läser du felkoden Windows Sockets version 2 för en detaljerad beskrivning av felet.
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.