Socket.EndSend Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt een asynchrone verzending beëindigd.
Overloads
| Name | Description |
|---|---|
| EndSend(IAsyncResult) |
Hiermee wordt een asynchrone verzending beëindigd. |
| EndSend(IAsyncResult, SocketError) |
Hiermee wordt een asynchrone verzending beëindigd. |
EndSend(IAsyncResult)
Hiermee wordt een asynchrone verzending beëindigd.
public:
int EndSend(IAsyncResult ^ asyncResult);
public int EndSend(IAsyncResult asyncResult);
member this.EndSend : IAsyncResult -> int
Public Function EndSend (asyncResult As IAsyncResult) As Integer
Parameters
- asyncResult
- IAsyncResult
Een IAsyncResult die statusinformatie voor deze asynchrone bewerking opslaat.
Retouren
Als dit lukt, wordt het aantal bytes verzonden naar de Socket; anders is er een ongeldige Socket fout.
Uitzonderingen
asyncResult is null.
asyncResult is niet geretourneerd door een aanroep naar de BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) methode.
EndSend(IAsyncResult) werd eerder aangeroepen voor het asynchrone verzenden.
Er is een fout opgetreden bij het openen van de socket.
– of –
.NET 7+ alleen: de Socket is gesloten.
.NET Framework, .NET Core en .NET 5-6: de Socket is gesloten.
Opmerkingen
Important
Dit is een compatibiliteits-API. Het wordt afgeraden om de APM - (Begin* en End*) methoden voor nieuwe ontwikkeling te gebruiken. Gebruik in plaats daarvan de Taskequivalenten op basis van -.
EndSend voltooit de bewerking die is gestart door BeginSend. U moet de IAsyncResult gemaakte door de overeenkomende BeginSend aanroep doorgeven.
Als u een verbindingsloos protocol gebruikt, EndSend wordt dit geblokkeerd totdat het datagram wordt verzonden. Als u een verbindingsgeoriënteerd protocol gebruikt, EndSend wordt dit geblokkeerd totdat een deel van de buffer is verzonden. Als de geretourneerde waarde EndSend aangeeft dat de buffer niet volledig is verzonden, roept u de BeginSend methode opnieuw aan en wijzigt u de buffer om de niet-verzonden gegevens op te slaan.
Er is geen garantie dat de gegevens die u verzendt, onmiddellijk in het netwerk worden weergegeven. Om de netwerkefficiëntie te verhogen, kan het onderliggende systeem de overdracht vertragen totdat een aanzienlijke hoeveelheid uitgaande gegevens wordt verzameld. Een geslaagde voltooiing van de BeginSend methode betekent dat het onderliggende systeem ruimte heeft gehad om uw gegevens te bufferen voor een netwerk verzenden.
Note
Als u een SocketExceptionontvangt, gebruikt u de SocketException.ErrorCode eigenschap om de specifieke foutcode te verkrijgen.
Note
Alle I/O die door een bepaalde thread wordt geïnitieerd, wordt geannuleerd wanneer deze thread wordt afgesloten. Een asynchrone bewerking in behandeling kan mislukken als de thread wordt afgesloten voordat de bewerking is voltooid.
Note
De geslaagde voltooiing van een verzendbericht geeft niet aan dat de gegevens zijn afgeleverd. Als er geen bufferruimte beschikbaar is in het transportsysteem voor het opslaan van de gegevens die moeten worden verzonden, wordt verzenden geblokkeerd tenzij de socket in de niet-blokkeringsmodus is geplaatst.
Note
Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in .NET Framework voor meer informatie.
Zie ook
- BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- AsyncState
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- NoDelay
Van toepassing op
EndSend(IAsyncResult, SocketError)
Hiermee wordt een asynchrone verzending beëindigd.
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
Parameters
- asyncResult
- IAsyncResult
Een IAsyncResult die statusinformatie voor deze asynchrone bewerking opslaat.
- errorCode
- SocketError
Een SocketError object waarin de socketfout wordt opgeslagen.
Retouren
Als dit lukt, wordt het aantal bytes verzonden naar de Socket; anders is er een ongeldige Socket fout.
Uitzonderingen
asyncResult is null.
asyncResult is niet geretourneerd door een aanroep naar de BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) methode.
EndSend(IAsyncResult) werd eerder aangeroepen voor het asynchrone verzenden.
Er is een fout opgetreden bij het openen van de socket.
– of –
.NET 7+ alleen: de Socket is gesloten.
.NET Framework, .NET Core en .NET 5-6: de Socket is gesloten.
Opmerkingen
Important
Dit is een compatibiliteits-API. Het wordt afgeraden om de APM - (Begin* en End*) methoden voor nieuwe ontwikkeling te gebruiken. Gebruik in plaats daarvan de Taskequivalenten op basis van -.
EndSend voltooit de bewerking die is gestart door BeginSend. U moet de IAsyncResult gemaakte door de overeenkomende BeginSend aanroep doorgeven.
Als u een verbindingsloos protocol gebruikt, EndSend wordt dit geblokkeerd totdat het datagram wordt verzonden. Als u een verbindingsgeoriënteerd protocol gebruikt, EndSend wordt dit geblokkeerd totdat een deel van de buffer is verzonden. Als de geretourneerde waarde EndSend aangeeft dat de buffer niet volledig is verzonden, roept u de BeginSend methode opnieuw aan en wijzigt u de buffer om de niet-verzonden gegevens op te slaan.
Er is geen garantie dat de gegevens die u verzendt, onmiddellijk in het netwerk worden weergegeven. Om de netwerkefficiëntie te verhogen, kan het onderliggende systeem de overdracht vertragen totdat een aanzienlijke hoeveelheid uitgaande gegevens wordt verzameld. Een geslaagde voltooiing van de BeginSend methode betekent dat het onderliggende systeem ruimte heeft gehad om uw gegevens te bufferen voor een netwerk verzenden.
Note
Als u een SocketExceptionontvangt, gebruikt u de SocketException.ErrorCode eigenschap om de specifieke foutcode te verkrijgen.
Note
Alle I/O die door een bepaalde thread wordt geïnitieerd, wordt geannuleerd wanneer deze thread wordt afgesloten. Een asynchrone bewerking in behandeling kan mislukken als de thread wordt afgesloten voordat de bewerking is voltooid.
Note
De geslaagde voltooiing van een verzendbericht geeft niet aan dat de gegevens zijn afgeleverd. Als er geen bufferruimte beschikbaar is in het transportsysteem voor het opslaan van de gegevens die moeten worden verzonden, wordt verzenden geblokkeerd tenzij de socket in de niet-blokkeringsmodus is geplaatst.
Note
Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in .NET Framework voor meer informatie.
Zie ook
- BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- AsyncState
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- NoDelay