Export (0) Print
Expand All
This topic has not yet been rated - Rate this topic

NegotiateStream.EndRead Method

Ends an asynchronous read operation that was started with a call to BeginRead.

Namespace:  System.Net.Security
Assembly:  System (in System.dll)
public override int EndRead(
	IAsyncResult asyncResult
)

Parameters

asyncResult
Type: System.IAsyncResult
An IAsyncResult instance returned by a call to BeginRead

Return Value

Type: System.Int32
A Int32 value that specifies the number of bytes read from the underlying stream.
ExceptionCondition
ArgumentNullException

asyncResult is null.

ArgumentException

The asyncResult was not created by a call to BeginRead.

InvalidOperationException

There is no pending read operation to complete.

IOException

The read operation failed.

InvalidOperationException

Authentication has not occurred.

If the operation has not completed, this method blocks until it does.

To perform this operation synchronously, use the Read method.

You cannot call this method until you have successfully authenticated. To authenticate, call one of the AuthenticateAsClient, BeginAuthenticateAsClient, AuthenticateAsServer, or BeginAuthenticateAsServer methods.

The following code example demonstrates ending an asynchronous read operation. For an example that demonstrates starting the operation, see BeginRead.


public static void EndReadCallback(IAsyncResult ar)
{
    // Get the saved data.
    ClientState cState = (ClientState) ar.AsyncState;
    TcpClient clientRequest = cState.Client;
    NegotiateStream authStream = (NegotiateStream) cState.AuthenticatedStream; 
    // Get the buffer that stores the message sent by the client.
    int bytes = -1;
    // Read the client message.
    try
    {
            bytes = authStream.EndRead(ar);
            cState.Message.Append(Encoding.UTF8.GetChars(cState.Buffer, 0, bytes));
            if (bytes != 0)
            {
                 authStream.BeginRead(cState.Buffer, 0, cState.Buffer.Length, 
                       new AsyncCallback(EndReadCallback), 
                       cState);
                       return;
         }
    }
    catch (Exception e)
    {
        // A real application should do something
        // useful here, such as logging the failure.
        Console.WriteLine("Client message exception:");
        Console.WriteLine(e);
        cState.Waiter.Set();
        return;
    }
    IIdentity id = authStream.RemoteIdentity;
    Console.WriteLine("{0} says {1}", id.Name, cState.Message.ToString());
    cState.Waiter.Set();
}


.NET Framework

Supported in: 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

ADD
Show:
© 2014 Microsoft. All rights reserved.