检查IP地址并下载数据

时间:2015-03-03 11:37:09

标签: c#

我有两个设备具有单独的IP地址,并且想要检查是否有任何一个连接并且如果连接从设备下载数据库,并且任何给定时间只连接一个设备。我的查询适用于一个设备如何检查哪个一个是连接的。我已更新了我的代码,但不确定它是如何工作的。

private void button7_Click(object sender, EventArgs e)// 1)first download database to local system.
{       
    this.Process1();
} 

public void Process1()
{
    string _ftpURL = @"131.000.00.0";  // fake Host URL or address of the SFTP server 
    /* how to check for another IP adddress if exists */

    string _UserName = "root"; //fake User Name of the SFTP server
    string _Password = "3term"; // fake Password of the SFTP server
    int _Port = 2222; //Port No of the SFTP server (if any)
    string _ftpDirectory = "/home/root/systools/WM/WebMobility.db"; //The directory in SFTP server where the files will be uploaded
    string LocalDirectory = "F:\\Explor\\final test"; //Local directory from where the files will be uploaded
    try
    {        
        Sftp Connection = new Sftp(_ftpURL, _UserName, _Password);
        Connection.Connect(_Port);
        Connection.Get(_ftpDirectory, LocalDirectory);
        Connection.Close();
    }
    catch (Exception ex)
    {
        if (ex is SshConnectionException || ex is SocketException)
        {
            _ifwInstance.Error(string.Format("Ignoring {0} during listing directory", ex.Message));
        }
        else
        {
            string _ftpURL = @"131.111.11.11";  // fake Host URL or address of the SFTP server 
            /* how to check for another IP adddress if exists */

            string _UserName = "root"; //fake User Name of the SFTP server
            string _Password = "3term"; // fake Password of the SFTP server
            int _Port = 2222; //Port No of the SFTP server (if any)
            string _ftpDirectory = "/home/root/systools/WM/WebMobility.db"; //The directory in SFTP server where the files will be uploaded
            string LocalDirectory = "F:\\Explor\\final test"; //Local directory from where the files will be uploaded
            throw new Exception("Login to SFT FAILED", ex);
        }
    }
}

更新代码:

string[] _ftpURL = { @"100.100.0.0", @"101.0.0.0" };  //Array of address to SFTP servers
string _UserName = "root"; //fake User Name of the SFTP server
string _Password = "310rp3"; // fake Password of the SFTP server
int _Port = 2222; //Port No of the SFTP server (if any)
string _ftpDirectory = "/home/root/systools/WM/WebMobility.db"; //The directory in SFTP server where the files will be uploaded
string LocalDirectory = "F:\\Explor\\final test"; //Local directory from where the files will be uploaded
bool online = false;
foreach(string furl in _ftpURL)
{
     Sftp Connection = new Sftp(furl, _UserName, _Password);
     try
     {
          Connection.Connect(_Port);
          online = true;
     }
     catch
     {
          online = false;
     }
     if(online == true)
     {
          Connection.Get(_ftpDirectory, LocalDirectory);
          Connection.Close();
          break;
     }

}

1 个答案:

答案 0 :(得分:0)

将这两种方法添加到某个班级,并从桌面代码中调用公共DownloadSftpFile

// returns true if the file had downloaded
public static bool DownloadSftpFile(string[] hosts, int port, string username, string password, string remotePathAndFile, string localPath)
{
    foreach (var host in hosts)
    {
        try
        {
            DownloadSftpFile(host, port, username, password, remotePathAndFile, localPath);
            return true;
        }
        catch(SshConnectionException exception)
        {
            // log
        }
        catch(SocketExcpetion exception)
        {
            // log
        }
    }

    return false;
}

private static void DownloadSftpFile(string host, int port, string username, string password, string remotePathAndFile, string localPath)
{
    using (var sftp = new Sftp(host, username, password))
    {
        sftp.Connect(port);
        sftp.Get(remotePathAndFile, localPath);
    }
}