Condividi tramite


Socket.EndReceive Metodo

Definizione

Termina una lettura asincrona in attesa.

Overload

EndReceive(IAsyncResult)

Termina una lettura asincrona in attesa.

EndReceive(IAsyncResult, SocketError)

Termina una lettura asincrona in attesa.

EndReceive(IAsyncResult)

Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs

Termina una lettura asincrona in attesa.

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

Parametri

asyncResult
IAsyncResult

Oggetto IAsyncResult che memorizza informazioni sullo stato e qualsiasi dato definito dall'utente per l'operazione asincrona.

Restituisce

Numero di byte ricevuti.

Eccezioni

asyncResult è null.

asyncResult non è stato restituito da una chiamata al metodo BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object).

EndReceive(IAsyncResult) è stato precedentemente chiamato per la lettura asincrona.

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 .

EndReceive completa l'operazione avviata da BeginReceive. È necessario passare l'oggetto IAsyncResult creato dalla chiamata corrispondente BeginReceive .

Il EndReceive metodo verrà bloccato fino a quando non saranno disponibili i dati. Se si usa un protocollo senza connessione, EndReceive leggerà il primo datagramma accodato disponibile nel buffer di rete in ingresso. Se si usa un protocollo orientato alla connessione, il EndReceive metodo leggerà la quantità di dati disponibile fino al numero di byte specificato nel size parametro del BeginReceive metodo . Se l'host remoto arresta la Socket connessione con il Shutdown metodo e tutti i dati disponibili sono stati ricevuti, il EndReceive metodo verrà completato immediatamente e restituirà zero byte.

Nota

Se si riceve un SocketExceptionoggetto , utilizzare la SocketException.ErrorCode proprietà per ottenere il codice di errore specifico.

Nota

Tutte le operazioni di I/O avviate da un determinato thread vengono annullate quando il thread viene chiuso. Un'operazione asincrona in sospeso può avere esito negativo se il thread viene chiuso prima del completamento dell'operazione.

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

Si applica a

EndReceive(IAsyncResult, SocketError)

Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs

Termina una lettura asincrona in attesa.

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

Parametri

asyncResult
IAsyncResult

Oggetto IAsyncResult che memorizza informazioni sullo stato e qualsiasi dato definito dall'utente per l'operazione asincrona.

errorCode
SocketError

Oggetto SocketError che memorizza l'errore del socket.

Restituisce

Numero di byte ricevuti.

Eccezioni

asyncResult è null.

asyncResult non è stato restituito da una chiamata al metodo BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object).

EndReceive(IAsyncResult) è stato precedentemente chiamato per la lettura asincrona.

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 .

EndReceive completa l'operazione avviata da BeginReceive. È necessario passare l'oggetto IAsyncResult creato dalla chiamata corrispondente BeginReceive .

Il EndReceive metodo verrà bloccato fino a quando non saranno disponibili i dati. Se si usa un protocollo senza connessione, EndReceive leggerà il primo datagramma accodato disponibile nel buffer di rete in ingresso. Se si usa un protocollo orientato alla connessione, il EndReceive metodo leggerà la quantità di dati disponibile fino al numero di byte specificato nel size parametro del BeginReceive metodo . Se l'host remoto arresta la Socket connessione con il Shutdown metodo e tutti i dati disponibili sono stati ricevuti, il EndReceive metodo verrà completato immediatamente e restituirà zero byte.

Nota

Se si riceve un SocketExceptionoggetto , utilizzare la SocketException.ErrorCode proprietà per ottenere il codice di errore specifico.

Nota

Tutte le operazioni di I/O avviate da un determinato thread vengono annullate quando il thread viene chiuso. Un'operazione asincrona in sospeso può avere esito negativo se il thread viene chiuso prima del completamento dell'operazione.

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

Si applica a