Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Socket.EndSend (IAsyncResult)

 

Data di pubblicazione: ottobre 2016

Termina un invio asincrono in sospeso.

Spazio dei nomi:   System.Net.Sockets
Assembly:  System (in System.dll)

public int EndSend(
	IAsyncResult asyncResult
)

Parametri

asyncResult
Type: System.IAsyncResult

Un IAsyncResult che archivia informazioni sullo stato per l'operazione asincrona.

Valore restituito

Type: System.Int32

Se ha esito positivo, il numero di byte inviati per il Socket; in caso contrario, un valore non valido Socket errore.

Exception Condition
ArgumentNullException

asyncResult è null.

ArgumentException

asyncResult non è stato restituito da una chiamata al BeginSend metodo.

InvalidOperationException

EndSend è stato chiamato in precedenza per l'invio asincrono.

SocketException

Si è verificato un errore durante il tentativo di accesso al socket. Per altre informazioni, vedere la sezione Osservazioni.

ObjectDisposedException

L'oggetto Socket è stato chiuso.

EndSend completa l'operazione di invio asincrono avviata BeginSend.

Prima di chiamare BeginSend, è necessario creare un metodo di callback che implementa il AsyncCallback delegare. Questo metodo di callback viene eseguita in un thread separato e viene chiamato dal sistema quando BeginSend restituisce. Il metodo di callback deve accettare il IAsyncResult restituito dal BeginSend metodo come parametro.

All'interno del metodo di callback, chiamare il AsyncState metodo il IAsyncResult parametro per ottenere l'invio Socket. Dopo aver ottenuto il Socket, è possibile chiamare il EndSend metodo per completare l'operazione di invio e restituire il numero di byte inviati.

Se si utilizza un protocollo senza connessione, EndSend si bloccherà fino all'invio del datagramma. Se si utilizza un protocollo orientato alla connessione, EndSend si bloccherà fino a quando l'invio di una parte del buffer. Se il valore restituito da EndSend indica che il buffer non ancora inviata, chiamare il BeginSend nuovamente, metodo modificando il buffer in modo che memorizzi i dati.

Non è garantito che i dati inviati verranno visualizzati immediatamente nella rete. Per aumentare l'efficienza della rete, il sistema sottostante può rinviare la trasmissione fino a quando non verrà raccolti una notevole quantità di dati in uscita. Il completamento del BeginSend metodo significa che il sistema sottostante avesse spazio sufficiente per i buffer per l'inviano dei dati per una rete.

System_CAPS_noteNota

Se si riceve un SocketException, utilizzare il SocketException.ErrorCode proprietà per ottenere il codice di errore specifico. Dopo avere ottenuto il codice, fare riferimento alla versione di Windows Sockets API errore codice documentazione 2 in MSDN library per una descrizione dettagliata dell'errore.

System_CAPS_noteNota

Tutti i/o avviate da un determinato thread viene annullata all'uscita dal thread. Un'operazione asincrona in sospeso può non riuscire se il thread termina prima del completamento dell'operazione.

System_CAPS_noteNota

Il completamento di una trasmissione non indica che i dati sono stati recapitati correttamente. Se lo spazio di buffer non è disponibile all'interno del sistema di trasporto per contenere i dati da trasmettere, trasmissione si bloccherà a meno che non è stato inserito il socket in modalità non di blocco.

System_CAPS_noteNota

Questo membro genera informazioni di traccia quando viene abilitata la funzionalità di traccia di rete nell'applicazione in uso. Per altre informazioni, vedere Tracciatura di rete in .NET Framework.

L'esempio di codice seguente viene terminato un invio asincrono in sospeso.

StateObject so = (StateObject) ar.AsyncState;
Socket s = so.workSocket;

int send = s.EndSend(ar);

      Console.WriteLine("The size of the message sent was :" + send.ToString());

s.Close();

.NET Framework
Disponibile da 1.1
Torna all'inizio
Mostra: