Socket.SendToAsync(SocketAsyncEventArgs) 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:
bool SendToAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool SendToAsync(System.Net.Sockets.SocketAsyncEventArgs e);
member this.SendToAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function SendToAsync (e As SocketAsyncEventArgs) As Boolean
Parametrar
Objektet SocketAsyncEventArgs som ska användas för den här asynkrona socketåtgärden.
Returer
true om I/O-åtgärden väntar. Händelsen Completed på parametern e utlöses när åtgärden har slutförts.
false om I/O-åtgärden slutfördes synkront. I det här fallet Completed utlöses inte händelsen för parametern e och objektet e som skickas som en parameter kan undersökas omedelbart efter att metodanropet returneras för att hämta resultatet av åtgärden.
Undantag
Får RemoteEndPoint inte vara null.
En socketåtgärd pågick redan med hjälp av objektet SocketAsyncEventArgs som anges i parametern e .
Har Socket stängts.
Det angivna protokollet är anslutningsorienterat, men Socket är ännu inte anslutet.
Kommentarer
Metoden SendToAsync startar en asynkron sändningsåtgärd till fjärrvärden som anges i SocketAsyncEventArgs.RemoteEndPoint parameterns e egenskap.
SendToAsync Genom att anropa metoden kan du skicka data i en separat körningstråd. Även om den här metoden är avsedd för anslutningslösa protokoll fungerar SendToAsync den med både anslutningslösa och anslutningsorienterade protokoll.
För att meddelas om slutförandet måste du skapa en motringningsmetod som implementerar EventHandler<SocketAsyncEventArgs-ombudet> och kopplar återanropet SocketAsyncEventArgs.Completed till händelsen.
Följande egenskaper och händelser i System.Net.Sockets.SocketAsyncEventArgs objektet krävs för att anropa den här metoden:
Anroparen kan ange SocketAsyncEventArgs.UserToken egenskapen till valfritt användartillståndsobjekt som önskas innan metoden anropas SendToAsync , så att informationen kan hämtas i motringningsmetoden. Om återanropet behöver mer information än ett enskilt objekt kan en liten klass skapas för att lagra den andra nödvändiga tillståndsinformationen som medlemmar.
Om du använder ett anslutningsorienterat protokoll måste du först anropa Acceptmetoden , , AcceptAsyncBeginAccept, BeginConnect, Connecteller ConnectAsync . Annars SendToAsync kommer att kasta en SocketException. När du använder ett anslutningsorienterat protokoll SendToAsync ignorerar SocketAsyncEventArgs.RemoteEndPoint metoden egenskapen och skickar data till den System.Net.EndPoint etablerade metoden Accept, AcceptAsync, BeginAccept, BeginConnect, Connecteller ConnectAsync .
Om du använder ett anslutningslöst protokoll behöver du inte upprätta en standardvärd med BeginConnectmetoden , Connecteller ConnectAsync innan du anropar SendToAsync. Du behöver bara göra detta om du tänker anropa BeginSend metoderna eller SendAsync . Om du anropar BeginConnectmetoden , Connecteller ConnectAsync innan du anropar SendToAsync, SocketAsyncEventArgs.RemoteEndPoint åsidosätter egenskapen endast den angivna standardvärden för den sändningsåtgärden. Du behöver inte heller anropa Bind metoden. I det här fallet tilldelar den underliggande tjänstleverantören den lämpligaste lokala nätverks-IP-adressen 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ätverks-IP-adressen och portnumret kan du använda LocalEndPoint egenskapen när SocketAsyncEventArgs.Completed händelsen har signalerats och de associerade ombuden anropas.
Om du vill skicka data till en sändningsadress måste du först anropa SetSocketOption metoden och ange socketalternativet för SocketOptionName.Broadcast true. 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 SendToAsync genererar en SocketException.
Om du anger flaggan DontRoute i SocketAsyncEventArgs.SocketFlags egenskapen dirigeras inte de data som du skickar.
För meddelandeorienterade socketar måste du se till att inte överskrida den maximala meddelandestorleken för den underliggande transporten. Om buffertens storlek överskrider den maximala paketstorleken för den underliggande tjänstleverantören skickas inte datagrammet och SendToAsync genererar en SocketException. Att en SendToAsync metod har slutförts tyder inte på att data har levererats.