The FTP client will remain in a "ReceivingFile" state until the stream is closed.
Example
The following example demonstrates how to use the BeginGetDownloadStream%M:Xceed.Ftp.AsyncFtpClient.EndGetDownloadStream(System.IAsyncResult)%
methods to display the content of a text file.
PrivateSub button1_Click(ByVal sender AsObject, ByVal e As System.EventArgs )
Dim ftp AsNew AsyncFtpClient()
Dim result As IAsyncResult = ftp.BeginConnect( "ftp.server.com", Nothing, Nothing )
WhileNot result.IsCompleted
Application.DoEvents()
WEnd
ftp.EndConnect( result )
result = ftp.BeginLogin( Nothing, Nothing )
WhileNot result.IsCompleted
Application.DoEvents()
WEnd
ftp.EndLogin( result )
result = ftp.BeginGetDownloadStream( "test.txt", 0, New AsyncCallback( AddressOfMe.end_download ), ftp )
WhileNot result.IsCompleted
Application.DoEvents()
WEnd
result = ftp.BeginDisconnect( Nothing, Nothing )
WhileNot result.IsCompleted
Application.DoEvents()
WEnd
ftp.EndDisconnect( result )
End SubPrivateSub end_download( ByVal result As IAsyncResult )
Dim client As AsyncFtpClient = result.AsyncState
TryDim stream As System.IO.Stream = client.EndGetDownloadStream( result )
Dim buffer(32768) AsByteDim bytesRead AsInteger = 0
' Loop until we have nothing more to read from the source stream.
' We are assuming that the data contained in the file is text
Dim data AsString = string.Empty
Do
bytesRead = stream.Read(buffer, 0, buffer.Length)
If bytesRead > 0 Then
data += System.Text.Encoding.ASCII.GetString( buffer )
EndIfLoopUntil bytesRead = 0
System.Diagnostics.Debug.WriteLine( data )
stream.Close()
Catch exception As Exception
System.Diagnostics.Debug.WriteLine( exception.Message )
EndTryEnd Sub
privatevoid button1_Click(object sender, System.EventArgs e)
{
AsyncFtpClient ftp = new AsyncFtpClient();
IAsyncResult result = ftp.BeginConnect( "ftp.server.com", null, null );
while( !result.IsCompleted )
Application.DoEvents();
ftp.EndConnect( result );
result = ftp.BeginLogin( null, null );
while( !result.IsCompleted )
Application.DoEvents();
ftp.EndLogin( result );
result = ftp.BeginGetDownloadStream( "test.txt", 0, new AsyncCallback( this.end_download ), ftp );
while( !result.IsCompleted )
Application.DoEvents();
result = ftp.BeginDisconnect( null, null );
while( !result.IsCompleted )
Application.DoEvents();
ftp.EndDisconnect( result );
}
privatevoid end_download( IAsyncResult result )
{
AsyncFtpClient client = result.AsyncState as AsyncFtpClient;
try
{
using( System.IO.Stream stream = client.EndGetDownloadStream( result ) )
{
byte[] buffer = newbyte[ 32768 ];
int bytesRead = 0;
// Loop until we have nothing more to read from the source stream.
// We are assuming that the data contained in the file is text
string data = string.Empty;
while( ( bytesRead = stream.Read( buffer, 0, buffer.Length ) ) > 0 )
{
data += System.Text.Encoding.ASCII.GetString( buffer );
}
System.Diagnostics.Debug.WriteLine( data );
}
}
catch( Exception exception )
{
System.Diagnostics.Debug.WriteLine( exception.Message );
}
}
Requirements
Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2