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 attesa.
Overload
EndSend(IAsyncResult) |
Termina un invio asincrono in attesa. |
EndSend(IAsyncResult, SocketError) |
Termina un invio asincrono in attesa. |
EndSend(IAsyncResult)
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
Termina un invio asincrono in attesa.
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
IAsyncResult che memorizza le informazioni di stato per l'operazione asincrona.
Restituisce
Se ha esito positivo, numero di byte inviati al Socket. In caso contrario, errore di Socket non valido.
Eccezioni
asyncResult
è null
.
asyncResult
non è stato restituito da una chiamata al metodo BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object).
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 il nuovo sviluppo. Usare invece gli Task
equivalenti basati su base.
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 il datagram non verrà inviato. Se si usa un protocollo orientato alla connessione, EndSend verrà bloccato fino all'invio di alcuni dei buffer. Se il valore restituito da EndSend indica che il buffer non è stato completamente inviato, chiamare di nuovo il metodo, modificando il BeginSend buffer per contenere i dati non inviati.
Non vi è alcuna garanzia 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 riuscito del BeginSend metodo significa che il sistema sottostante ha avuto spazio per bufferre i dati per un invio di rete.
Nota
Se si riceve un SocketExceptionoggetto , utilizzare la proprietà per ottenere il SocketException.ErrorCode codice di errore specifico.
Nota
Tutti gli I/O avviati da un determinato thread vengono annullati quando il thread viene chiuso. Un'operazione asincrona in sospeso può non riuscire se il thread viene chiuso prima del completamento dell'operazione.
Nota
Il completamento riuscito 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à non di blocco.
Nota
Questo membro genera informazioni di traccia quando viene abilitata la funzionalità di traccia di rete nell'applicazione in uso. 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
Termina un invio asincrono in attesa.
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
IAsyncResult che memorizza le informazioni di stato per l'operazione asincrona.
- errorCode
- SocketError
Oggetto SocketError che memorizza l'errore del socket.
Restituisce
Se ha esito positivo, numero di byte inviati al Socket. In caso contrario, errore di Socket non valido.
Eccezioni
asyncResult
è null
.
asyncResult
non è stato restituito da una chiamata al metodo BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object).
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 il nuovo sviluppo. Usare invece gli Task
equivalenti basati su base.
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 il datagram non verrà inviato. Se si usa un protocollo orientato alla connessione, EndSend verrà bloccato fino all'invio di alcuni dei buffer. Se il valore restituito da EndSend indica che il buffer non è stato completamente inviato, chiamare di nuovo il metodo, modificando il BeginSend buffer per contenere i dati non inviati.
Non vi è alcuna garanzia 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 riuscito del BeginSend metodo significa che il sistema sottostante ha avuto spazio per bufferre i dati per un invio di rete.
Nota
Se si riceve un SocketExceptionoggetto , utilizzare la proprietà per ottenere il SocketException.ErrorCode codice di errore specifico.
Nota
Tutti gli I/O avviati da un determinato thread vengono annullati quando il thread viene chiuso. Un'operazione asincrona in sospeso può non riuscire se il thread viene chiuso prima del completamento dell'operazione.
Nota
Il completamento riuscito 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à non di blocco.
Nota
Questo membro genera informazioni di traccia quando viene abilitata la funzionalità di traccia di rete nell'applicazione in uso. 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