Socket.EndSend 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.
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 und höher: 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 die Neuentwicklung 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 er die nicht gesendeten Daten enthält.
Es gibt keine Garantie dafür, 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 eine Netzwerksendung hatte.
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 gibt nicht an, dass die Daten erfolgreich übermittelt wurden. Wenn im Transportsystem kein Pufferspeicher zur Verfügung steht, um die zu übertragenden Daten aufzunehmen, wird send 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
- BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- AsyncState
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- NoDelay
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 und höher: 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 die Neuentwicklung 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 er die nicht gesendeten Daten enthält.
Es gibt keine Garantie dafür, 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 eine Netzwerksendung hatte.
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 gibt nicht an, dass die Daten erfolgreich übermittelt wurden. Wenn im Transportsystem kein Pufferspeicher zur Verfügung steht, um die zu übertragenden Daten aufzunehmen, wird send 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
- BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- AsyncState
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- NoDelay