Freigeben über


Socket.BeginSendTo Methode

Definition

Sendet Daten asynchron an einen bestimmten 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, an buffer der mit dem Senden von Daten begonnen werden soll.

size
Int32

Die Anzahl der zu sendenden Bytes.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags Werte.

remoteEP
EndPoint

Ein EndPoint Wert, der das Remotegerät darstellt.

callback
AsyncCallback

Die AsyncCallback Stellvertretung.

state
Object

Ein Objekt, das Statusinformationen für diese Anforderung enthält.

Gibt zurück

Ein IAsyncResult Verweis auf das asynchrone Senden.

Ausnahmen

buffer ist null.

- oder -

remoteEP ist null.

.NET Framework und .NET 5 und früher: Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.

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 minus buffer des Werts des offset Parameters.

Das Socket wurde geschlossen.

Ein aufrufer höher im Aufrufstapel verfügt nicht über die Berechtigung für den angeforderten Vorgang.

Hinweise

Von Bedeutung

Dies ist eine Kompatibilitäts-API. Es wird nicht empfohlen, die Methoden APM (Begin* und End*) für die neue Entwicklung zu verwenden. Verwenden Sie stattdessen die Task-basierten Entsprechungen.

Sie können einen Rückruf übergeben, der AsyncCallback implementiert wird, um über den Abschluss des Vorgangs BeginSendTo benachrichtigt zu werden. Wenn der zugrunde liegende Netzwerkstapel den Vorgang synchron abgeschlossen hat, wird der Rückruf während des Aufrufs BeginSendToinline ausgeführt. In diesem Fall wird die CompletedSynchronously Eigenschaft für die zurückgegebene IAsyncResult Eigenschaft so festgelegt true , dass die Methode synchron abgeschlossen wurde. Verwenden Sie die AsyncState Eigenschaft des IAsyncResult Zustandsobjekts, das an die BeginSendTo Methode übergeben wird.

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 das Connect, BeginConnect, Accept, oder BeginAccept die Methode aufrufen oder BeginSendTo eine .SocketException BeginSendTo ignoriert den remoteEP Parameter und sendet Daten an die EndPoint in der Connect, BeginConnect, , Acceptoder BeginAccept Methode.

Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie vor dem Aufrufen SendTokeinen Standard-Remotehost mit der oder BeginConnect der Connect Methode einrichten. Sie müssen dies nur tun, wenn Sie die BeginSend Methode aufrufen möchten. Wenn Sie die Connect Methode BeginConnect vor dem Aufrufen SendToaufrufen, überschreibt der remoteEP Parameter den angegebenen Standard-Remotehost nur für diesen Sendevorgang. Sie sind auch nicht erforderlich, um die Bind Methode aufzurufen. In diesem Fall weist der zugrunde liegende Dienstanbieter die am besten geeignete lokale Netzwerkadresse und Portnummer zu. Verwenden Sie eine Portnummer null, wenn der zugrunde liegende Dienstanbieter einen kostenlosen 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 Übertragungsadresse 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 des 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 ein SocketException.

Wenn Sie das DontRoute Kennzeichen als socketflags Parameter angeben, werden die gesendeten Daten nicht weitergeleitet.

Hinweis

Wenn Sie ein SocketExceptionObjekt erhalten, verwenden Sie die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode abzurufen. Nachdem Sie diesen Code erhalten haben, finden Sie in der Windows Sockets Version 2-API-Fehlercodedokumentation eine detaillierte Beschreibung des Fehlers.

Hinweis

Dieses Mitglied gibt Protokollierungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in Ihrer Anwendung aktivieren. Weitere Informationen finden Sie unter Network Tracing 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 Instanz und einem bestimmten Socket Rückruf) wird bei nachfolgenden Verwendungen dieses Kontexts eine Leistungsverbesserung angezeigt.

Gilt für:

Weitere Informationen