Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

NetworkStream.EndRead (Método)

Controla el final de una lectura asincrónica.

Espacio de nombres:  System.Net.Sockets
Ensamblado:  System (en System.dll)

public override int EndRead(
	IAsyncResult asyncResult
)

Parámetros

asyncResult
Tipo: System.IAsyncResult
IAsyncResult que representa la llamada asincrónica.

Valor devuelto

Tipo: System.Int32
Número de bytes leídos de NetworkStream.

ExcepciónCondición
ArgumentException

El valor del parámetro asyncResult es null.

IOException

El Socket subyacente está cerrado.

O bien

Se ha producido un error al obtener acceso al socket. Vea la sección Comentarios para obtener más información.

ObjectDisposedException

El objeto NetworkStream está cerrado.

El método EndRead finaliza la operación de lectura asincrónica iniciada en el método BeginRead.

Antes de llamar a BeginRead, es necesario crear un método de devolución de llamada que implemente el delegado de AsyncCallback. Este método de devolución de llamada se ejecuta en un subproceso independiente y es llamado por el sistema después de que el método BeginRead devuelva un valor. El método de devolución de llamada debe aceptar la interfaz IAsyncResult devuelta por el método BeginRead como parámetro.

Dentro del método de devolución de llamada, llame a la propiedad AsyncState de IAsyncResult para obtener el objeto de estado pasado al método BeginRead. Extraiga el objeto NetworkStream receptor de este objeto de estado. Una vez obtenido el objeto NetworkStream, llame al método EndRead para finalizar correctamente la operación de lectura y devolver el número de bytes leídos.

El método EndRead se bloqueará hasta que haya datos disponibles. El método EndRead leerá tantos datos como haya disponibles, hasta llegar al número de bytes especificado por el parámetro size del método BeginRead. Si el host remoto cierra la conexión de Socket y se han recibido todos los datos disponibles, el método EndRead finaliza inmediatamente y devuelve cero bytes.

Para obtener los datos recibidos, llame a la propiedad AsyncState de IAsyncResult y extraiga el búfer que contiene el objeto de estado resultante.

NotaNota

Si recibe una excepción IOException, compruebe la propiedad InnerException para determinar si fue provocada por una excepción SocketException. En ese caso, utilice la propiedad ErrorCode para obtener el código de error concreto y consulte en MSDN la documentación de códigos de error de la API de Windows Sockets, versión 2, para ver una descripción detallada del error.

En el siguiente ejemplo de código, myReadCallback se proporciona para BeginRead como el método de devolución de llamada. EndRead se implementa en myReadCallback para completar la llamada de lectura asincrónica iniciada por BeginRead.


// Example of EndRead, DataAvailable and BeginRead.

public static void myReadCallBack(IAsyncResult ar ){

    NetworkStream myNetworkStream = (NetworkStream)ar.AsyncState;
    byte[] myReadBuffer = new byte[1024];
    String myCompleteMessage = "";
    int numberOfBytesRead;

    numberOfBytesRead = myNetworkStream.EndRead(ar);
    myCompleteMessage = 
        String.Concat(myCompleteMessage, Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead));    

    // message received may be larger than buffer size so loop through until you have it all.
    while(myNetworkStream.DataAvailable){
    	
        myNetworkStream.BeginRead(myReadBuffer, 0, myReadBuffer.Length, 
        	                                       new AsyncCallback(NetworkStream_ASync_Send_Receive.myReadCallBack), 
        	                                       myNetworkStream);  

    }

    // Print out the received message to the console.
    Console.WriteLine("You received the following message : " +
                                myCompleteMessage);
}



.NET Framework

Compatible con: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft