Deltax76
Deltax76

Reputation: 14263

How to check FTP connection?

Is there a simple, fast way to check that a FTP connection (includes host, port, username and password) is valid and working? I'm using C#. Thank you.

Upvotes: 11

Views: 55508

Answers (6)

Mahbubur Rahman Manik
Mahbubur Rahman Manik

Reputation: 5161

This might be useful.

  public async Task<bool> ConnectAsync(string host, string user, string password)
    {
        try
        {
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create(host);
            request.Credentials = new NetworkCredential(user, password);
            request.UseBinary = true;
            request.UsePassive = true;
            request.KeepAlive = false; // useful when only to check the connection.
            request.Method = WebRequestMethods.Ftp.ListDirectory;
            FtpWebResponse response = (FtpWebResponse) await request.GetResponseAsync();
            return true;
        }
        catch (Exception)
        {
            return false;
        }            
    }

Upvotes: 3

Ubirajara Erthal
Ubirajara Erthal

Reputation: 79

this is the method I use, let me know if you know a better one.

/*Hola Este es el metodo que utilizo si conoces uno mejor hasmelo saber Ubirajara 100% Mexicano [email protected] */

private bool isValidConnection(string url, string user, string password)
{
    try
    {
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url);
        request.Method = WebRequestMethods.Ftp.ListDirectory;
        request.Credentials = new NetworkCredential(user, password);
        request.GetResponse();
    }
    catch(WebException ex)
    {
        return false;
    }
    return true;
}

Upvotes: 7

anishMarokey
anishMarokey

Reputation: 11397

try something like this:

FtpWebRequest requestDir = (FtpWebRequest)FtpWebRequest.Create("ftp://ftp.google.com");
requestDir.Credentials = new NetworkCredential("username", "password");
try
{
     WebResponse response = requestDir.GetResponse();
     //set your flag
}
catch
{
}

Upvotes: 19

msarchet
msarchet

Reputation: 15242

You could try using System.Net.FtpWebRequest and then just check the GetResponseStream method.

So something like

System.Net.FtpWebRequest myFTP = new System.Net.FtpWebRequest

//Add your credentials and ports

try
{
    myFTP.GetResponseStream();
   //set some flags
}
catch ex
{
  //handle it when it is not working
}

Upvotes: 1

rainhider
rainhider

Reputation: 49

This is from the msdn site to diplay files from a server

public static bool DisplayFileFromServer(Uri serverUri)
{
// The serverUri parameter should start with the ftp:// scheme. 
if (serverUri.Scheme != Uri.UriSchemeFtp)
{
    return false;
}
// Get the object used to communicate with the server.
WebClient request = new WebClient();

// This example assumes the FTP site uses anonymous logon.
request.Credentials = new NetworkCredential ("anonymous","[email protected]");
try 
{
    byte [] newFileData = request.DownloadData (serverUri.ToString());
    string fileString = System.Text.Encoding.UTF8.GetString(newFileData);
    Console.WriteLine(fileString);
}
catch (WebException e)
{
    Console.WriteLine(e.ToString());
}
return true;
}

Upvotes: -2

Aaronontheweb
Aaronontheweb

Reputation: 8414

Use either System.Net.FtpWebRequest or System.Net.WebRequestMethods.Ftp to test your connection using your login credentials. If the FTP request fails for whatever reason the appropriate error message will be returned indicating what the problem was (authentication, unable to connect, etc...)

Upvotes: 2

Related Questions