Socket.EndSendTo(IAsyncResult) Methode

Definition

Beendet einen ausstehenden asynchronen Sendevorgang an einen bestimmten Zielort.Ends a pending asynchronous send to a specific location.

public:
 int EndSendTo(IAsyncResult ^ result);
public int EndSendTo (IAsyncResult result);
member this.EndSendTo : IAsyncResult -> int
Public Function EndSendTo (result As IAsyncResult) As Integer

Parameter

asyncResult
IAsyncResult

Ein IAsyncResult, das Zustandsinformationen über diesen asynchronen Vorgang sowie ggf. vorhandene benutzerdefinierte Daten speichert.An IAsyncResult that stores state information and any user defined data for this asynchronous operation.

Gibt zurück

Wenn erfolgreich, die Anzahl der gesendeten Bytes, andernfalls ein Fehler aufgrund eines ungültigen Socket.If successful, the number of bytes sent; otherwise, an invalid Socket error.

Ausnahmen

asyncResult ist null.asyncResult is null.

asyncResult wurde nicht durch einen Aufruf der BeginSendTo(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)-Methode zurückgegeben.asyncResult was not returned by a call to the BeginSendTo(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object) method.

EndSendTo(IAsyncResult) wurde bereits für den asynchronen Sendevorgang aufgerufen.EndSendTo(IAsyncResult) was previously called for the asynchronous send.

Fehler beim Versuch, auf den Socket zuzugreifen.An error occurred when attempting to access the socket.

Der Socket wurde geschlossen.The Socket has been closed.

Beispiele

Im folgenden Codebeispiel wird ein asynchroner Sendevorgang an eine bestimmte Position beendet.The following code example ends an asynchronous send to a specific location.

StateObject^ so = safe_cast<StateObject^>(ar->AsyncState);
Socket^ s = so->workSocket;

int send = s->EndSendTo( ar );

Console::WriteLine( "The size of the message sent was : {0}", send );

s->Close();
StateObject so = (StateObject) ar.AsyncState;
Socket s = so.workSocket;

int send = s.EndSendTo(ar);

   Console.WriteLine("The size of the message sent was :" + send.ToString());

s.Close();
   Dim so As StateObject = CType(ar.AsyncState, StateObject)
   Dim s As Socket = so.workSocket
   
   Dim send As Integer = s.EndSendTo(ar)
   
   Console.WriteLine(("The size of the message sent was :" + send.ToString()))
   
   s.Close()
End Sub

Hinweise

EndSendTo schließt den asynchronen Sendevorgang ab, der in BeginSendTogestartet wurde.EndSendTo completes the asynchronous send operation started in BeginSendTo.

Vor dem Aufrufen von BeginSendTomüssen Sie eine Rückruf Methode erstellen, die den AsyncCallback Delegaten implementiert.Before calling BeginSendTo, you need to create a callback method that implements the AsyncCallback delegate. Diese Rückruf Methode wird in einem separaten Thread ausgeführt und vom System aufgerufen, nachdem BeginReceive zurückgegeben hat.This callback method executes in a separate thread and is called by the system after BeginReceive returns. Die Rückruf Methode muss die IAsyncResult akzeptieren, die von der BeginSendTo-Methode als Parameter zurückgegeben wird.The callback method must accept the IAsyncResult returned by the BeginSendTo method as a parameter.

Rufen Sie innerhalb der Rückruf Methode die AsyncState-Methode des IAsyncResult-Parameters auf, um den sendenden Socketabzurufen.Within the callback method, call the AsyncState method of the IAsyncResult parameter to obtain the sending Socket. Nachdem Sie die Socketerhalten haben, können Sie die EndSendTo-Methode aufrufen, um den Sendevorgang erfolgreich abzuschließen und die Anzahl der gesendeten Bytes zurückzugeben.After obtaining the Socket, you can call the EndSendTo method to successfully complete the send operation and return the number of bytes sent.

Wenn Sie ein verbindungsloses Protokoll verwenden, wird EndSendTo blockiert, bis das Datagramm gesendet wird.If you are using a connectionless protocol, EndSendTo will block until the datagram is sent. Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, wird EndSendTo blockiert, bis die angeforderte Anzahl von Bytes gesendet wird.If you are using a connection-oriented protocol, EndSendTo will block until the requested number of bytes are sent. Es gibt keine Garantie dafür, dass die gesendeten Daten sofort im Netzwerk angezeigt werden.There is no guarantee that the data you send will appear on the network immediately. Um die Netzwerkeffizienz zu erhöhen, kann das zugrunde liegende System die Übertragung verzögern, bis eine beträchtliche Menge an ausgehenden Daten gesammelt wird.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. Ein erfolgreicher Abschluss der BeginSendTo-Methode bedeutet, dass das zugrunde liegende System über Platz verfügt, um die Daten für ein Netzwerk Sendevorgang zu puffern.A successful completion of the BeginSendTo method means that the underlying system has had room to buffer your data for a network send.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Nachdem Sie diesen Code abgerufen haben, finden Sie in der API-Fehlercode Dokumentation der Windows Sockets, Version 2 , eine ausführliche Beschreibung des Fehlers.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren.This member outputs trace information when you enable network tracing in your application. Weitere Informationen finden Sie unter Netzwerk Ablauf Verfolgung in der .NET Framework.For more information, see Network Tracing in the .NET Framework.

Gilt für: