Socket.SendAsync(SocketAsyncEventArgs) Methode

Definition

Sendet Daten asynchron an ein verbundenes Socket-Objekt.Sends data asynchronously to a connected Socket object.

public:
 bool SendAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool SendAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.SendAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function SendAsync (e As SocketAsyncEventArgs) As Boolean

Parameter

e
SocketAsyncEventArgs

Das SocketAsyncEventArgs-Objekt, das für diesen asynchronen Socketvorgang verwendet werden soll.The SocketAsyncEventArgs object to use for this asynchronous socket operation.

Gibt zurück

true, wenn der E/A-Vorgang aussteht.true if the I/O operation is pending. Das Completed-Ereignis für den e-Parameter wird nach dem Abschluss des Vorgangs ausgelöst.The Completed event on the e parameter will be raised upon completion of the operation.

false, wenn der E/A-Vorgang synchron abgeschlossen wurde.false if the I/O operation completed synchronously. In diesem Fall wird das Completed-Ereignis für den e-Parameter nicht ausgelöst, und das als Parameter übergebene e-Objekt kann direkt nach der Rückgabe des Methodenaufrufs untersucht werden, um die Ergebnisse des Vorgangs abzurufen.In this case, The Completed event on the e parameter will not be raised and the e object passed as a parameter may be examined immediately after the method call returns to retrieve the result of the operation.

Ausnahmen

Die Buffer-Eigenschaft oder BufferList-Eigenschaft des e-Parameters muss auf gültige Puffer verweisen.The Buffer or BufferList properties on the e parameter must reference valid buffers. Eine dieser Eigenschaften kann festgelegt werden, nicht jedoch beide gleichzeitig.One or the other of these properties may be set, but not both at the same time.

Es wird bereits ein Socketvorgang mit dem im e-Parameter angegebenen SocketAsyncEventArgs-Objekt ausgeführt.A socket operation was already in progress using the SocketAsyncEventArgs object specified in the e parameter.

Für diese Methode ist Windows XP oder höher erforderlich.Windows XP or later is required for this method.

Der Socket wurde geschlossen.The Socket has been closed.

Der Socket ist noch nicht verbunden oder wurde nicht über eine Accept()-AcceptAsync(SocketAsyncEventArgs)- oder BeginAccept-Methode abgerufen.The Socket is not yet connected or was not obtained via an Accept(), AcceptAsync(SocketAsyncEventArgs),or BeginAccept, method.

Hinweise

Die SendAsync-Methode wird verwendet, um ausgehende Daten von einem oder mehreren Puffern in einem Verbindungs orientierten Socket zu schreiben.The SendAsync method is used to write outgoing data from one or more buffers on a connection-oriented socket. Diese Methode kann jedoch auch für verbindungslose Sockets verwendet werden, die einen Remote Host für einen Verbindungsvorgang angegeben haben.This method can also be used, however, on connectionless sockets that have specified a remote host on a connect operation.

Die SendAsync-Methode startet einen asynchronen Sendevorgang an den Remote Host, der in der Accept-, AcceptAsync-, BeginAccept-, BeginConnect-, Connect-oder ConnectAsync-Methode eingerichtet wurde.The SendAsync method starts an asynchronous send operation to the remote host established in the Accept, AcceptAsync, BeginAccept, BeginConnect, Connect, or ConnectAsync method.

Die folgenden Eigenschaften und Ereignisse für das System.Net.Sockets.SocketAsyncEventArgs Objekt sind erforderlich, um diese Methode erfolgreich aufzurufen:The following properties and events on the System.Net.Sockets.SocketAsyncEventArgs object are required to successfully call this method:

Der Aufrufer kann die SocketAsyncEventArgs.UserToken-Eigenschaft auf ein beliebiges Benutzer Zustands Objekt festlegen, bevor die SendAsync-Methode aufgerufen wird, damit die Informationen in der Rückruf Methode abgerufen werden können.The caller may set the SocketAsyncEventArgs.UserToken property to any user state object desired before calling the SendAsync method, so that the information will be retrievable in the callback method. Wenn der Rückruf mehr Informationen benötigt als ein einzelnes Objekt, kann eine kleine Klasse erstellt werden, die die anderen erforderlichen Zustandsinformationen als Member enthält.If the callback needs more information than a single object, a small class can be created to hold the other required state information as members.

Die SendAsync-Methode löst eine Ausnahme aus, wenn Sie nicht zuerst Accept, AcceptAsync, BeginAcceptBeginConnect, Connectoder ConnectAsyncaufzurufen.The SendAsync method will throw an exception if you do not first call Accept, AcceptAsync, BeginAcceptBeginConnect, Connect, or ConnectAsync.

Wenn Sie die SendAsync-Methode aufrufen, haben Sie die Möglichkeit, Daten in einem separaten Ausführungs Thread zu senden.Calling the SendAsync method gives you the ability to send data within a separate execution thread.

Überschreiten Sie für Nachrichten orientierte Sockets nicht die maximale Nachrichtengröße des zugrunde liegenden Windows Sockets-Dienstanbieters.For message-oriented sockets, do not exceed the maximum message size of the underlying Windows sockets service provider. Wenn die Daten zu lang sind, um atomisch über den zugrunde liegenden Dienstanbieter zu übergeben, werden keine Daten übertragen, und die SendAsync Methode löst eine SocketException mit dem SocketAsyncEventArgs.SocketError auf den nativen Winsock-wsaemsgsize-Fehlercode (10040) aus.If the data is too long to pass atomically through the underlying service provider, no data is transmitted and the SendAsync method throws a SocketException with the SocketAsyncEventArgs.SocketError set to the native Winsock WSAEMSGSIZE error code (10040).

Beachten Sie, dass der erfolgreiche Abschluss der SendAsync-Methode nicht anzeigt, dass die Daten erfolgreich übermittelt wurden.Note that the successful completion of the SendAsync method does not indicate that the data was successfully delivered.

Gilt für:

Siehe auch