Socket.EndSend Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Termina un invio asincrono in sospeso.
Overload
| Nome | Descrizione |
|---|---|
| EndSend(IAsyncResult) |
Termina un invio asincrono in sospeso. |
| EndSend(IAsyncResult, SocketError) |
Termina un invio asincrono in sospeso. |
EndSend(IAsyncResult)
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
Termina un invio asincrono in sospeso.
public:
int EndSend(IAsyncResult ^ asyncResult);
public int EndSend(IAsyncResult asyncResult);
member this.EndSend : IAsyncResult -> int
Public Function EndSend (asyncResult As IAsyncResult) As Integer
Parametri
- asyncResult
- IAsyncResult
Oggetto IAsyncResult che archivia le informazioni sullo stato per questa operazione asincrona.
Restituisce
Se ha esito positivo, il numero di byte inviati a Socket; in caso contrario, un errore non valido Socket .
Eccezioni
asyncResult è null.
asyncResult non è stato restituito da una chiamata al BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) metodo .
EndSend(IAsyncResult) è stato precedentemente chiamato per l'invio asincrono.
Si è verificato un errore durante il tentativo di accesso al socket.
oppure
Solo .NET 7+: l'oggetto Socket è stato chiuso.
Solo .NET Framework, .NET Core e .NET 5-6: è Socket stato chiuso.
Commenti
Importante
Si tratta di un'API di compatibilità. Non è consigliabile usare i metodi APM (Begin* e End*) per nuovi sviluppi. Usare invece gli Taskequivalenti basati su .
EndSend completa l'operazione avviata da BeginSend. È necessario passare l'oggetto IAsyncResult creato dalla chiamata corrispondente BeginSend .
Se si usa un protocollo senza connessione, EndSend si blocca fino all'invio del datagramma. Se si usa un protocollo orientato alla connessione, EndSend si blocca fino a quando non viene inviato un certo buffer. Se il valore restituito da EndSend indica che il buffer non è stato inviato completamente, chiamare di nuovo il BeginSend metodo, modificando il buffer per contenere i dati non inviati.
Non è garantito che i dati inviati vengano visualizzati immediatamente nella rete. Per aumentare l'efficienza della rete, il sistema sottostante può ritardare la trasmissione fino a quando non viene raccolta una quantità significativa di dati in uscita. Un completamento corretto del BeginSend metodo significa che il sistema sottostante ha avuto spazio per memorizzare nel buffer i dati per un invio di rete.
Annotazioni
Se si riceve un oggetto SocketException, utilizzare la SocketException.ErrorCode proprietà per ottenere il codice di errore specifico.
Annotazioni
Tutte le operazioni di I/O avviate da un determinato thread vengono annullate quando il thread viene chiuso. Un'operazione asincrona in sospeso può non riuscire se il thread viene chiuso prima del completamento dell'operazione.
Annotazioni
Il completamento di un invio non indica che i dati sono stati recapitati correttamente. Se non è disponibile spazio buffer all'interno del sistema di trasporto per contenere i dati da trasmettere, l'invio bloccherà a meno che il socket non sia stato inserito in modalità di blocco.
Annotazioni
Questo membro restituisce informazioni di traccia quando si abilita la traccia di rete nell'applicazione. Per altre informazioni, vedere Traccia di rete in .NET Framework.
Vedi anche
- BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- AsyncState
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- NoDelay
Si applica a
EndSend(IAsyncResult, SocketError)
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
Termina un invio asincrono in sospeso.
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
Parametri
- asyncResult
- IAsyncResult
Oggetto IAsyncResult che archivia le informazioni sullo stato per questa operazione asincrona.
- errorCode
- SocketError
Oggetto SocketError che archivia l'errore socket.
Restituisce
Se ha esito positivo, il numero di byte inviati a Socket; in caso contrario, un errore non valido Socket .
Eccezioni
asyncResult è null.
asyncResult non è stato restituito da una chiamata al BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) metodo .
EndSend(IAsyncResult) è stato precedentemente chiamato per l'invio asincrono.
Si è verificato un errore durante il tentativo di accesso al socket.
oppure
Solo .NET 7+: l'oggetto Socket è stato chiuso.
Solo .NET Framework, .NET Core e .NET 5-6: è Socket stato chiuso.
Commenti
Importante
Si tratta di un'API di compatibilità. Non è consigliabile usare i metodi APM (Begin* e End*) per nuovi sviluppi. Usare invece gli Taskequivalenti basati su .
EndSend completa l'operazione avviata da BeginSend. È necessario passare l'oggetto IAsyncResult creato dalla chiamata corrispondente BeginSend .
Se si usa un protocollo senza connessione, EndSend si blocca fino all'invio del datagramma. Se si usa un protocollo orientato alla connessione, EndSend si blocca fino a quando non viene inviato un certo buffer. Se il valore restituito da EndSend indica che il buffer non è stato inviato completamente, chiamare di nuovo il BeginSend metodo, modificando il buffer per contenere i dati non inviati.
Non è garantito che i dati inviati vengano visualizzati immediatamente nella rete. Per aumentare l'efficienza della rete, il sistema sottostante può ritardare la trasmissione fino a quando non viene raccolta una quantità significativa di dati in uscita. Un completamento corretto del BeginSend metodo significa che il sistema sottostante ha avuto spazio per memorizzare nel buffer i dati per un invio di rete.
Annotazioni
Se si riceve un oggetto SocketException, utilizzare la SocketException.ErrorCode proprietà per ottenere il codice di errore specifico.
Annotazioni
Tutte le operazioni di I/O avviate da un determinato thread vengono annullate quando il thread viene chiuso. Un'operazione asincrona in sospeso può non riuscire se il thread viene chiuso prima del completamento dell'operazione.
Annotazioni
Il completamento di un invio non indica che i dati sono stati recapitati correttamente. Se non è disponibile spazio buffer all'interno del sistema di trasporto per contenere i dati da trasmettere, l'invio bloccherà a meno che il socket non sia stato inserito in modalità di blocco.
Annotazioni
Questo membro restituisce informazioni di traccia quando si abilita la traccia di rete nell'applicazione. Per altre informazioni, vedere Traccia di rete in .NET Framework.
Vedi anche
- BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- AsyncState
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- NoDelay