Socket.EndSend Methode

Definition

Beendet einen ausstehenden asynchronen Sendevorgang.

Überlädt

EndSend(IAsyncResult)

Beendet einen ausstehenden asynchronen Sendevorgang.

EndSend(IAsyncResult, SocketError)

Beendet einen ausstehenden asynchronen Sendevorgang.

EndSend(IAsyncResult)

Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs

Beendet einen ausstehenden asynchronen Sendevorgang.

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

Parameter

asyncResult
IAsyncResult

Ein IAsyncResult, das Zustandsinformation für den asynchronen Vorgang speichert.

Gibt zurück

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

Ausnahmen

asyncResult ist null.

asyncResult wurde nicht durch einen Aufruf der BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)-Methode zurückgegeben.

EndSend(IAsyncResult) wurde bereits für den asynchronen Sendevorgang aufgerufen.

Fehler beim Versuch, auf den Socket zuzugreifen.

- oder -

Nur .NET 7+: Die Socket wurde geschlossen.

nur .NET Framework, .NET Core und .NET 5-6: Die Socket wurde geschlossen.

Hinweise

Wichtig

Dies ist eine Kompatibilitäts-API. Es wird nicht empfohlen, die Methoden APM (Begin* und End*) für neue Entwicklung zu verwenden. Verwenden Sie stattdessen die Task-basierten Entsprechungen.

EndSend schließt den von gestarteten Vorgang ab BeginSend. Sie müssen das übergeben, das IAsyncResult vom übereinstimmenden BeginSend Aufruf erstellt wurde.

Wenn Sie ein verbindungsloses Protokoll verwenden, wird blockiert, EndSend bis das Datagramm gesendet wird. Wenn Sie ein verbindungsorientiertes Protokoll verwenden, wird blockiert, EndSend bis ein Teil des Puffers gesendet wurde. Wenn der Rückgabewert von EndSend angibt, dass der Puffer nicht vollständig gesendet wurde, rufen Sie die BeginSend Methode erneut auf, und ändern Sie den Puffer so, dass die nicht gesendeten Daten gespeichert werden.

Es gibt keine Garantie, dass die von Ihnen gesendeten Daten sofort im Netzwerk angezeigt werden. Um die Netzwerkeffizienz zu erhöhen, kann das zugrunde liegende System die Übertragung verzögern, bis eine erhebliche Menge ausgehender Daten gesammelt wird. Ein erfolgreicher Abschluss der BeginSend Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern Ihrer Daten für ein Netzwerk sendet.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten.

Hinweis

Alle von einem bestimmten Thread initiierten E/A-Vorgänge werden abgebrochen, wenn dieser Thread beendet wird. Ein ausstehender asynchroner Vorgang kann fehlschlagen, wenn der Thread beendet wird, bevor der Vorgang abgeschlossen ist.

Hinweis

Der erfolgreiche Abschluss eines Sendevorgangs bedeutet nicht, dass die Daten erfolgreich übermittelt wurden. Wenn im Transportsystem kein Pufferspeicher zur Verfügung steht, um die zu übertragenden Daten aufzunehmen, wird das Senden blockiert, es sei denn, der Socket wurde in den Nichtblockierungsmodus versetzt.

Hinweis

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

Weitere Informationen

Gilt für:

EndSend(IAsyncResult, SocketError)

Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs

Beendet einen ausstehenden asynchronen Sendevorgang.

public:
 int EndSend(IAsyncResult ^ asyncResult, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int EndSend (IAsyncResult asyncResult, out System.Net.Sockets.SocketError errorCode);
member this.EndSend : IAsyncResult * SocketError -> int
Public Function EndSend (asyncResult As IAsyncResult, ByRef errorCode As SocketError) As Integer

Parameter

asyncResult
IAsyncResult

Ein IAsyncResult, das Zustandsinformation für den asynchronen Vorgang speichert.

errorCode
SocketError

Ein SocketError-Objekt, in dem der Socketfehler gespeichert wird.

Gibt zurück

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

Ausnahmen

asyncResult ist null.

asyncResult wurde nicht durch einen Aufruf der BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)-Methode zurückgegeben.

EndSend(IAsyncResult) wurde bereits für den asynchronen Sendevorgang aufgerufen.

Fehler beim Versuch, auf den Socket zuzugreifen.

- oder -

Nur .NET 7+: Die Socket wurde geschlossen.

nur .NET Framework, .NET Core und .NET 5-6: Die Socket wurde geschlossen.

Hinweise

Wichtig

Dies ist eine Kompatibilitäts-API. Es wird nicht empfohlen, die Methoden APM (Begin* und End*) für neue Entwicklung zu verwenden. Verwenden Sie stattdessen die Task-basierten Entsprechungen.

EndSend schließt den von gestarteten Vorgang ab BeginSend. Sie müssen das übergeben, das IAsyncResult vom übereinstimmenden BeginSend Aufruf erstellt wurde.

Wenn Sie ein verbindungsloses Protokoll verwenden, wird blockiert, EndSend bis das Datagramm gesendet wird. Wenn Sie ein verbindungsorientiertes Protokoll verwenden, wird blockiert, EndSend bis ein Teil des Puffers gesendet wurde. Wenn der Rückgabewert von EndSend angibt, dass der Puffer nicht vollständig gesendet wurde, rufen Sie die BeginSend Methode erneut auf, und ändern Sie den Puffer so, dass die nicht gesendeten Daten gespeichert werden.

Es gibt keine Garantie, dass die von Ihnen gesendeten Daten sofort im Netzwerk angezeigt werden. Um die Netzwerkeffizienz zu erhöhen, kann das zugrunde liegende System die Übertragung verzögern, bis eine erhebliche Menge ausgehender Daten gesammelt wird. Ein erfolgreicher Abschluss der BeginSend Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern Ihrer Daten für ein Netzwerk sendet.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten.

Hinweis

Alle von einem bestimmten Thread initiierten E/A-Vorgänge werden abgebrochen, wenn dieser Thread beendet wird. Ein ausstehender asynchroner Vorgang kann fehlschlagen, wenn der Thread beendet wird, bevor der Vorgang abgeschlossen ist.

Hinweis

Der erfolgreiche Abschluss eines Sendevorgangs bedeutet nicht, dass die Daten erfolgreich übermittelt wurden. Wenn im Transportsystem kein Pufferspeicher zur Verfügung steht, um die zu übertragenden Daten aufzunehmen, wird das Senden blockiert, es sei denn, der Socket wurde in den Nichtblockierungsmodus versetzt.

Hinweis

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

Weitere Informationen

Gilt für: