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
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.
Exception | Description |
---|---|
IOException | Thrown when the stream is not Readable. |
ArgumentNullException | asyncResult is a null reference. |
ArgumentException | asyncResult 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. |
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.
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));
}
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family
SegmentedStream Class | SegmentedStream Members | Overload List
Send comments on this topic.
Documentation version 1.1.2.0.
© 2008 Dart Communications. All rights reserved.