Socket.BeginSendTo Methode

Definition

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

buffer
Byte[]

Ein Array vom Typ Byte, das die zu sendenden Daten enthält.

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.

remoteEP
EndPoint

Ein EndPoint, der das Remotegerät darstellt.

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

buffer ist null.

- oder -

remoteEP ist null.

.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.

Gilt für:

Weitere Informationen