Socket.SendToAsync(SocketAsyncEventArgs) Methode

Definitie

Verzendt gegevens asynchroon naar een specifieke externe host.

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

Parameters

e
SocketAsyncEventArgs

Het SocketAsyncEventArgs object dat moet worden gebruikt voor deze asynchrone socketbewerking.

Retouren

true als de I/O-bewerking in behandeling is. De Completed gebeurtenis voor de e parameter wordt gegenereerd na voltooiing van de bewerking.

false als de I/O-bewerking synchroon is voltooid. In dit geval wordt de Completed gebeurtenis voor de e parameter niet gegenereerd en kan het e object dat als parameter wordt doorgegeven, direct worden onderzocht nadat de methodeaanroep terugkeert om het resultaat van de bewerking op te halen.

Uitzonderingen

De RemoteEndPoint waarde kan niet null zijn.

Er is al een socketbewerking uitgevoerd met behulp van het SocketAsyncEventArgs object dat is opgegeven in de e parameter.

Het opgegeven protocol is verbindingsgericht, maar het Socket is nog niet verbonden.

Opmerkingen

De SendToAsync methode start een asynchrone verzendbewerking naar de externe host die is opgegeven in de SocketAsyncEventArgs.RemoteEndPoint eigenschap van de e parameter. Als u de SendToAsync methode aanroept, kunt u gegevens verzenden binnen een afzonderlijke uitvoeringsthread. Hoewel deze methode is bedoeld voor verbindingsloze protocollen, SendToAsync werkt deze met zowel verbindingsloze als verbindingsgeoriënteerde protocollen.

Als u op de hoogte wilt worden gesteld van voltooiing, moet u een callback-methode maken waarmee de gemachtigde EventHandler<SocketAsyncEventArgs> wordt geïmplementeerd en de callback aan de SocketAsyncEventArgs.Completed gebeurtenis wordt gekoppeld.

De volgende eigenschappen en gebeurtenissen op het System.Net.Sockets.SocketAsyncEventArgs object zijn vereist om deze methode aan te roepen:

De aanroeper kan de SocketAsyncEventArgs.UserToken eigenschap instellen op een gewenst gebruikersstatusobject voordat de SendToAsync methode wordt aangeroepen, zodat de gegevens kunnen worden opgehaald in de callback-methode. Als de callback meer informatie nodig heeft dan één object, kan er een kleine klasse worden gemaakt om de andere vereiste statusgegevens als leden te bewaren.

Als u een verbindingsgeoriënteerd protocol gebruikt, moet u eerst de Acceptmethode , AcceptAsync, BeginAccept, BeginConnectof ConnectConnectAsync methode aanroepen. Anders SendToAsync zal een SocketException. Wanneer u een verbindingsgeoriënteerd protocol gebruikt, negeert de SendToAsync methode de SocketAsyncEventArgs.RemoteEndPoint eigenschap en verzendt deze gegevens naar de System.Net.EndPoint tot stand gebrachte Accept, BeginAcceptAcceptAsync, , BeginConnectof ConnectConnectAsync methode.

Als u een verbindingsloos protocol gebruikt, hoeft u geen standaard externe host tot stand te brengen met de BeginConnect, Connectof ConnectAsync methode voordat u aanroept SendToAsync. U hoeft dit alleen te doen als u de BeginSend of SendAsync methoden wilt aanroepen. Als u de BeginConnect, Connectof ConnectAsync methode voordat u aanroept SendToAsync, overschrijft de SocketAsyncEventArgs.RemoteEndPoint eigenschap de opgegeven standaard externe host alleen voor die verzendbewerking. U hoeft de methode ook niet aan te roepen Bind . In dit geval wijst de onderliggende serviceprovider het meest geschikte IP-adres en poortnummer van het lokale netwerk toe. Gebruik een poortnummer van nul als u wilt dat de onderliggende serviceprovider een gratis poort selecteert. Als u het toegewezen IP-adres en poortnummer van het lokale netwerk wilt identificeren, kunt u de LocalEndPoint eigenschap gebruiken nadat de SocketAsyncEventArgs.Completed gebeurtenis is gesignaleerd en de bijbehorende gemachtigden worden aangeroepen.

Als u gegevens naar een broadcast-adres wilt verzenden, moet u eerst de SetSocketOption methode aanroepen en de socketoptie instellen op SocketOptionName.Broadcast waar. U moet er ook voor zorgen dat de grootte van uw buffer niet groter is dan de maximale pakketgrootte van de onderliggende serviceprovider. Als dat het geval is, wordt het datagram niet verzonden en SendToAsync wordt er een SocketException.

Als u de dontRoute-vlag in de SocketAsyncEventArgs.SocketFlags eigenschap opgeeft, worden de gegevens die u verzendt, niet gerouteerd.

Voor berichtgeoriënteerde sockets moet u ervoor zorgen dat de maximale berichtgrootte van het onderliggende transport niet wordt overschreden. Als de grootte van de buffer groter is dan de maximale pakketgrootte van de onderliggende serviceprovider, wordt het datagram niet verzonden en SendToAsync wordt er een SocketException. De geslaagde voltooiing van een SendToAsync methode geeft niet aan dat de gegevens zijn geleverd.

Van toepassing op

Zie ook