Socket.BeginSendTo Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Sendet asynchron Daten an einen angegebenen Remotehost.
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);
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
Parameter
- offset
- Int32
Die nullbasierte Position im buffer
, an der mit dem Senden der Daten begonnen werden soll.
- size
- Int32
Die Anzahl von Bytes, die gesendet werden sollen.
- socketFlags
- SocketFlags
Eine bitweise Kombination der SocketFlags-Werte.
- callback
- AsyncCallback
Der AsyncCallback-Delegat.
- state
- Object
Ein Objekt mit Zustandsinformationen für diese Anforderung.
Gibt zurück
Ein IAsyncResult, das auf den asynchronen Sendevorgang verweist.
Ausnahmen
.NET Framework und .NET 5 und früher: Fehler beim Zugriff auf den Socket.
offset
ist kleiner als 0.
- oder -
offset
ist größer als die Länge von buffer
.
- oder -
size
ist kleiner als 0.
- oder -
size
ist größer als die Länge von buffer
minus dem Wert des offset
-Parameters.
Der Socket wurde geschlossen.
Ein höher in der Aufrufliste befindlicher Aufrufer verfügt nicht über die Berechtigung für den angeforderten Vorgang.
Hinweise
Wichtig
Dies ist eine Kompatibilitäts-API. Es wird nicht empfohlen, die Methoden APM (Begin*
und End*
) für die Neuentwicklung zu verwenden. Verwenden Sie stattdessen die Task
-basierten Entsprechungen.
Sie können einen Rückruf übergeben, der implementiert, BeginSendTo um über den Abschluss des Vorgangs AsyncCallback benachrichtigt zu werden. Beachten Sie, dass der Rückruf während des Aufrufs BeginSendTovon inline ausgeführt wird, wenn der zugrunde liegende Netzwerkstapel den Vorgang synchron abschließt. In diesem Fall wird die CompletedSynchronously -Eigenschaft für den zurückgegebenen IAsyncResult auf true
festgelegt, um anzugeben, dass die Methode synchron abgeschlossen wurde. Verwenden Sie die AsyncState -Eigenschaft von IAsyncResult , um das an die -Methode übergebene Zustandsobjekt BeginSendTo abzurufen.
Der BeginSendTo Vorgang muss durch Aufrufen der EndSendTo -Methode abgeschlossen werden. In der Regel wird die -Methode vom bereitgestellten AsyncCallback Delegaten aufgerufen. EndSendTo blockiert den aufrufenden Thread, bis der Vorgang abgeschlossen ist.
Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie zuerst die Connect- , AcceptBeginConnect- oder BeginAccept -Methode aufrufen, oder BeginSendTo löst eine ausSocketException.
BeginSendToignoriert den remoteEP
-Parameter und sendet Daten an die EndPoint in der Connect- , BeginConnectAccept- oder BeginAccept -Methode festgelegte Methode.
Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie vor dem Aufrufen SendTovon keinen Standard-Remotehost mit der Connect - oder BeginConnect -Methode einrichten. Sie müssen dies nur tun, wenn Sie beabsichtigen, die BeginSend -Methode aufzurufen. Wenn Sie die Connect - oder BeginConnect -Methode vor dem Aufrufen SendToaufrufen, überschreibt der remoteEP
Parameter den angegebenen Standard-Remotehost nur für diesen Sendevorgang. Außerdem müssen Sie die Bind -Methode nicht aufrufen. In diesem Fall weist der zugrunde liegende Dienstanbieter die am besten geeignete lokale Netzwerkadresse und Portnummer zu. Verwenden Sie die Portnummer 0 , wenn der zugrunde liegende Dienstanbieter einen freien Port auswählen soll. Wenn Sie die zugewiesene lokale Netzwerkadresse und Portnummer identifizieren müssen, können Sie die LocalEndPoint -Eigenschaft verwenden, nachdem die EndSendTo Methode erfolgreich abgeschlossen wurde.
Wenn Sie Daten an eine Broadcastadresse senden möchten, müssen Sie zuerst die SetSocketOption -Methode aufrufen und die Socketoption auf SocketOptionName.Broadcastfestlegen. – Sie müssen auch sicherstellen, dass die Größe Ihres Puffers die maximale Paketgröße des zugrunde liegenden Dienstanbieters nicht überschreitet. Wenn dies der Fall ist, wird das Datagramm nicht gesendet und EndSendTo löst eine aus SocketException.
Wenn Sie das DontRoute Flag als socketflags
Parameter angeben, werden die gesendeten Daten nicht weitergeleitet.
Hinweis
Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten. Nachdem Sie diesen Code erhalten haben, finden Sie in der Dokumentation zu Windows Sockets Version 2-API-Fehlercode eine ausführliche Beschreibung des Fehlers.
Hinweis
Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.
Hinweis
Der Ausführungskontext (der Sicherheitskontext, der identitätswechselte Benutzer und der aufrufende Kontext) wird für die asynchronen Socket Methoden zwischengespeichert. Nach der ersten Verwendung eines bestimmten Kontexts (einer bestimmten asynchronen Socket Methode, einer bestimmten Socket instance und einem bestimmten Rückruf) wird bei nachfolgenden Verwendungen dieses Kontexts eine Leistungsverbesserung angezeigt.