Socket.BeginSendTo Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Verzendt gegevens asynchroon naar een specifieke externe host.
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
Parameters
- offset
- Int32
De positie buffer op basis van nul waarop gegevens moeten worden verzonden.
- size
- Int32
Het aantal te verzenden bytes.
- socketFlags
- SocketFlags
Een bitsgewijze combinatie van de SocketFlags waarden.
- callback
- AsyncCallback
De AsyncCallback gedelegeerde.
- state
- Object
Een object met statusinformatie voor deze aanvraag.
Retouren
Een IAsyncResult die verwijst naar het asynchrone verzenden.
Uitzonderingen
alleen .NET Framework: er is een fout opgetreden bij het openen van de socket.
offset is kleiner dan 0.
– of –
offset is groter dan de lengte van buffer.
– of –
size is kleiner dan 0.
– of –
size is groter dan de lengte van buffer min de waarde van de offset parameter.
De Socket is gesloten.
Een aanroeper hoger in de aanroepstack heeft geen machtiging voor de aangevraagde bewerking.
Opmerkingen
Important
Dit is een compatibiliteits-API. Het wordt afgeraden om de APM - (Begin* en End*) methoden voor nieuwe ontwikkeling te gebruiken. Gebruik in plaats daarvan de Taskequivalenten op basis van -.
U kunt een callback doorgeven waarnaar wordt geïmplementeerd AsyncCallbackBeginSendTo om een melding te ontvangen over de voltooiing van de bewerking. Houd er rekening mee dat als de onderliggende netwerkstack de bewerking synchroon voltooit, de callback inline wordt uitgevoerd, tijdens de aanroep naar BeginSendTo. In dit geval wordt de CompletedSynchronously eigenschap op de geretourneerde IAsyncResult waarde ingesteld om aan te true geven dat de methode synchroon is voltooid. Gebruik de AsyncState eigenschap van de IAsyncResult functie om het statusobject te verkrijgen dat is doorgegeven aan de BeginSendTo methode.
De BeginSendTo bewerking moet worden voltooid door de EndSendTo methode aan te roepen. Normaal gesproken wordt de methode aangeroepen door de opgegeven AsyncCallback gemachtigde. EndSendTo blokkeert de aanroepende thread totdat de bewerking is voltooid.
Als u een verbindingsgeoriënteerd protocol gebruikt, moet u eerst de Connectmethode , BeginConnectof AcceptBeginAccept methode aanroepen of BeginSendTo een SocketException.
BeginSendTonegeert de remoteEP parameter en verzendt gegevens naar de EndPoint in de Connect, BeginConnectAcceptof BeginAccept methode gevestigde methode.
Als u een verbindingsloos protocol gebruikt, hoeft u geen standaard externe host met de Connect of BeginConnect methode tot stand te brengen voordat u aanroept SendTo. U hoeft dit alleen te doen als u de BeginSend methode wilt aanroepen. Als u de Connect of BeginConnect methode aanroept voordat u aanroept SendTo, overschrijft de remoteEP parameter alleen de opgegeven standaard externe host voor die verzendbewerking. U hoeft de methode ook niet aan te roepen Bind . In dit geval wijst de onderliggende serviceprovider het meest geschikte lokale netwerkadres en poortnummer toe. Gebruik een poortnummer van nul als u wilt dat de onderliggende serviceprovider een gratis poort selecteert. Als u het toegewezen lokale netwerkadres en poortnummer wilt identificeren, kunt u de LocalEndPoint eigenschap gebruiken nadat de EndSendTo methode is voltooid.
Als u gegevens naar een broadcast-adres wilt verzenden, moet u eerst de SetSocketOption methode aanroepen en de socketoptie instellen op SocketOptionName.Broadcast. -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 EndSendTo wordt er een SocketException.
Als u de DontRoute vlag opgeeft als de socketflags parameter, worden de gegevens die u verzendt, niet gerouteerd.
Note
Als u een SocketExceptionontvangt, gebruikt u de SocketException.ErrorCode eigenschap om de specifieke foutcode te verkrijgen. Nadat u deze code hebt verkregen, raadpleegt u de Windows Sockets versie 2 API-foutcode documentatie voor een gedetailleerde beschrijving van de fout.
Note
Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in .NET Framework voor meer informatie.
Note
De uitvoeringscontext (de beveiligingscontext, de geïmiteerde gebruiker en de aanroepende context) wordt in de cache opgeslagen voor de asynchrone Socket methoden. Na het eerste gebruik van een bepaalde context (een specifieke asynchrone Socket methode, een specifiek Socket exemplaar en een specifieke callback), zien volgende toepassingen van die context een prestatieverbetering.