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