Socket.SendToAsync(SocketAsyncEventArgs) 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:
bool SendToAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool SendToAsync(System.Net.Sockets.SocketAsyncEventArgs e);
member this.SendToAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function SendToAsync (e As SocketAsyncEventArgs) As Boolean
Parameter
Das SocketAsyncEventArgs Objekt, das für diesen asynchronen Socketvorgang verwendet werden soll.
Gibt zurück
true wenn der E/A-Vorgang aussteht. Das Completed Ereignis für den e Parameter wird nach Abschluss des Vorgangs ausgelöst.
false wenn der E/A-Vorgang synchron abgeschlossen wurde. In diesem Fall wird das Completed Ereignis für den e Parameter nicht ausgelöst, und das e als Parameter übergebene Objekt kann sofort untersucht werden, nachdem der Methodenaufruf zurückgegeben wird, um das Ergebnis des Vorgangs abzurufen.
Ausnahmen
Der RemoteEndPoint Wert darf nicht null sein.
Ein Socketvorgang wurde bereits mit dem SocketAsyncEventArgs im e Parameter angegebenen Objekt ausgeführt.
Das Socket wurde geschlossen.
Das angegebene Protokoll ist verbindungsorientiert, aber die Socket Verbindung ist noch nicht verbunden.
Hinweise
Die SendToAsync Methode startet einen asynchronen Sendevorgang an den Remotehost, der in der SocketAsyncEventArgs.RemoteEndPoint Eigenschaft des e Parameters angegeben ist. Durch Aufrufen der SendToAsync Methode können Sie Daten in einem separaten Ausführungsthread senden. Obwohl diese Methode für verbindungslose Protokolle vorgesehen ist, SendToAsync funktioniert sie sowohl mit verbindungslosen als auch verbindungsorientierten Protokollen.
Um über den Abschluss benachrichtigt zu werden, müssen Sie eine Rückrufmethode erstellen, die den EventHandler<SocketAsyncEventArgs-Delegaten> implementiert, und den Rückruf an das SocketAsyncEventArgs.Completed Ereignis anfügen.
Die folgenden Eigenschaften und Ereignisse für das System.Net.Sockets.SocketAsyncEventArgs Objekt sind erforderlich, um diese Methode erfolgreich aufzurufen:
Der Aufrufer kann die SocketAsyncEventArgs.UserToken Eigenschaft auf ein beliebiges Benutzerstatusobjekt festlegen, das vor dem Aufrufen der SendToAsync Methode gewünscht wird, sodass die Informationen in der Rückrufmethode abgerufen werden können. Wenn der Rückruf mehr Informationen als ein einzelnes Objekt benötigt, kann eine kleine Klasse erstellt werden, um die anderen erforderlichen Statusinformationen als Member zu speichern.
Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie zuerst das Accept, , , AcceptAsync, BeginAccept, oder BeginConnectConnect die Methode ConnectAsyncaufrufen. Andernfalls SendToAsync wird ein SocketException. Bei Verwendung eines verbindungsorientierten Protokolls ignoriert die Methode die SendToAsyncSocketAsyncEventArgs.RemoteEndPoint Eigenschaft und sendet Daten an die System.Net.EndPoint in der Accept, AcceptAsync, , BeginAccept, BeginConnect, , Connectoder ConnectAsync Methode.
Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie vor dem Aufrufen BeginConnectkeinen Standard-Remotehost mit dem Connect, ConnectAsyncoder SendToAsync der Methode einrichten. Sie müssen dies nur tun, wenn Sie die BeginSend Methoden aufrufen SendAsync möchten. Wenn Sie die , oder Methode vor dem Aufrufen BeginConnectaufrufen, überschreibt die Connect Eigenschaft den angegebenen Standard-Remotehost nur für diesen Sendevorgang.ConnectAsyncSendToAsyncSocketAsyncEventArgs.RemoteEndPoint Sie sind auch nicht erforderlich, um die Bind Methode aufzurufen. In diesem Fall weist der zugrunde liegende Dienstanbieter die am besten geeignete IP-Adresse und Portnummer für das lokale Netzwerk zu. Verwenden Sie eine Portnummer null, wenn der zugrunde liegende Dienstanbieter einen kostenlosen Port auswählen soll. Wenn Sie die zugewiesene ip-Adresse und Portnummer des lokalen Netzwerks identifizieren müssen, können Sie die LocalEndPoint Eigenschaft verwenden, nachdem das SocketAsyncEventArgs.Completed Ereignis signalisiert wurde und die zugehörigen Stellvertretungen aufgerufen werden.
Wenn Sie Daten an eine Übertragungsadresse senden möchten, müssen Sie zuerst die SetSocketOption Methode aufrufen und die Socketoption auf SocketOptionName.Broadcast "true" festlegen. 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 SendToAsync löst ein SocketException.
Wenn Sie das DontRoute-Flag in der SocketAsyncEventArgs.SocketFlags Eigenschaft angeben, werden die gesendeten Daten nicht weitergeleitet.
Bei nachrichtenorientierten Sockets muss darauf geachtet werden, dass die maximale Nachrichtengröße des zugrunde liegenden Transports nicht überschritten wird. Wenn die Größe des Puffers die maximale Paketgröße des zugrunde liegenden Dienstanbieters überschreitet, wird das Datagramm nicht gesendet und SendToAsync löst ein SocketException. Der erfolgreiche Abschluss einer SendToAsync Methode gibt nicht an, dass die Daten erfolgreich übermittelt wurden.