Freigeben über


Socket.EndSendTo-Methode

Beendet einen ausstehenden asynchronen Sendevorgang an einen bestimmten Zielort.

Namespace: System.Net.Sockets
Assembly: System (in system.dll)

Syntax

'Declaration
Public Function EndSendTo ( _
    asyncResult As IAsyncResult _
) As Integer
'Usage
Dim instance As Socket
Dim asyncResult As IAsyncResult
Dim returnValue As Integer

returnValue = instance.EndSendTo(asyncResult)
public int EndSendTo (
    IAsyncResult asyncResult
)
public:
int EndSendTo (
    IAsyncResult^ asyncResult
)
public int EndSendTo (
    IAsyncResult asyncResult
)
public function EndSendTo (
    asyncResult : IAsyncResult
) : int

Parameter

  • asyncResult
    Ein IAsyncResult, das Zustandsinformationen über diesen asynchronen Vorgang sowie ggf. vorhandene benutzerdefinierte Daten speichert.

Rückgabewert

Wenn erfolgreich, die Anzahl der gesendeten Bytes, andernfalls ein Fehler aufgrund eines ungültigen Socket.

Ausnahmen

Ausnahmetyp Bedingung

ArgumentNullException

asyncResult ist NULL (Nothing in Visual Basic).

ArgumentException

asyncResult wurde nicht durch einen Aufruf der BeginSendTo-Methode zurückgegeben.

InvalidOperationException

EndSendTo wurde bereits für den asynchronen Sendevorgang aufgerufen.

SocketException

Fehler beim Zugriff auf den Socket. Weitere Informationen finden Sie im Abschnitt Hinweise.

ObjectDisposedException

Der Socket wurde geschlossen.

Hinweise

EndSendTo beendet den asynchronen Sendevorgang, der in BeginSendTo gestartet wurde.

Sie müssen eine Rückrufmethode erstellen, die den AsyncCallback-Delegaten implementiert, bevor Sie BeginSendTo aufrufen können. Diese Rückrufmethode wird in einem eigenen Thread ausgeführt und vom System aufgerufen, nachdem BeginReceive beendet wurde. Die Rückrufmethode muss das von der BeginSendTo-Methode zurückgegebene IAsyncResult als Parameter akzeptieren.

Rufen Sie in der Rückrufmethode die AsyncState-Methode des IAsyncResult-Parameters auf, um den sendenden Socket abzurufen. Nach dem Abrufen des Socket können Sie die EndSendTo-Methode aufrufen, um den Sendevorgang erfolgreich abzuschließen und die Anzahl der gesendeten Bytes zurückzugeben.

Wenn Sie ein verbindungsloses Protokoll verwenden, wird EndSendTo blockiert, bis das Datagramm gesendet wurde. Wenn Sie ein verbindungsorientiertes Protokoll verwenden, wird EndSendTo blockiert, bis die angeforderte Anzahl von Bytes gesendet wurde. Es gibt keine Garantie dafür, dass die gesendeten Daten sofort im Netzwerk zur Verfügung stehen. Zum Erhöhen der Netzwerkleistung kann die Übertragung vom zugrunde liegenden System verzögert werden, bis eine gewisse Menge ausgehender Daten gesammelt wurde. Ein erfolgreicher Abschluss der BeginSendTo-Methode bedeutet, dass das zugrunde liegende System über genügend Speicher zum Puffern der Daten für eine Netzwerkübertragung verfügt.

Hinweis

Wenn Sie eine SocketException erhalten, können Sie mit der SocketException.ErrorCode-Eigenschaft den spezifischen Fehlercode abrufen. Nachdem Sie diesen Code abgerufen haben, finden Sie in der Dokumentation der MSDN Library zu API-Fehlercodes unter Windows Sockets, Version 2, eine ausführliche Beschreibung des Fehlers.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung.

Beispiel

Im folgenden Codebeispiel wird ein ausstehender asynchroner Sendevorgang an einen bestimmten Zielort beendet.

   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 'SendTo_Callback
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();
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.get_AsyncState();
Socket s = so.workSocket;
int send = s.EndSendTo(ar);
Console.WriteLine("The size of the message sent was :"
    + ((Int32)send).ToString());
s.Close();

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

Socket-Klasse
Socket-Member
System.Net.Sockets-Namespace