See Also

SegmentedStream Class  | SegmentedStream Members  | Overload List

Requirements

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

Language

Visual Basic

C#

C++

C++/CLI

Show All

ar
Reference to the pending asynchronous request that is returned from BeginRead().
See Also Languages PowerTCP SSL Sockets for .NET

EndRead(IAsyncResult) Method

Dart.PowerTCP.SslSockets Namespace > SegmentedStream Class > EndRead Method : EndRead(IAsyncResult) Method

Ends a pending asynchronous SegmentedStream.BeginRead request.

[Visual Basic]
Overloads Overrides Public Function EndRead( _    ByVal ar As IAsyncResult _ ) As Integer
[C#]
public override int EndRead(    IAsyncResult ar );
[C++]
public: int EndRead(    IAsyncResult* ar ) override
[C++/CLI]
public: int EndRead(    IAsyncResult^ ar ) override

Parameters

ar
Reference to the pending asynchronous request that is returned from BeginRead().

Return Type

The number of bytes read from the stream and copied into the user's buffer. Will return 0 at the end of the stream to indicate the stream has closed and all data has been read.

Exceptions

ExceptionDescription
IOExceptionThrown when the stream is not Readable.
ArgumentNullExceptionasyncResult is a null reference.
ArgumentExceptionasyncResult is not a valid reference.
EndOfStreamException The end of the stream was found before the required byte count was received, or the end of the stream was found before the delimiter was found.
InternalBufferOverflowException The delimiter was not found within the maximum number of bytes (count) specified.

Remarks

You will normally call this method from within your AsyncCallback event handler to complete your asynchronous read request, but it can be called anytime to cancel an outstanding request.

Example

The following example demonstrates asynchronously reading from the server using the stream interface. This involves creating a callback method in which the response is handled. If you would like to use fully asynchronous methods with events already implemented, try the low-level interface (Tcp.BeginRead & Tcp.BeginWrite).

[C#] 


private void AsynchronousReadTest()
{
  
// Connect to the server
  
tcp1.Connect("atropos", 13);

  
// DAYTIME protocol (port 13) sends data and closes, receive data.
  
// This demonstrates receiving data asynchronously using the stream interface.
           
  
// data buffer is a global variable
  
databuffer = new byte[tcp1.ReceiveBufferSize];

  
// Begin the asynchronous Read operation.
  
tcp1.Stream.BeginRead(databuffer, 0, tcp1.ReceiveBufferSize, new System.AsyncCallback(MyCallback), null);
}

private void MyCallback(System.IAsyncResult ar)
{
  
// End pending asynchronous request.
  
if(ar.IsCompleted)
     tcp1.Stream.EndRead(ar);

  
// Write result
  
Debug.WriteLine(System.Text.Encoding.Default.GetString(databuffer));
}
                

Requirements

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

See Also

SegmentedStream Class  | SegmentedStream Members  | Overload List


Send comments on this topic.

Documentation version 1.1.2.0.

© 2008 Dart Communications.  All rights reserved.