我是這個網站的新手,所以我提前道歉,如果我做任何格式錯誤。讓我知道是否需要進一步澄清。C# - 用幾種下載方法檢查幾個IP地址
我目前正在研究C#中的一個程序,該程序旨在從多個http或ftp源文件下載文件。
我希望它通過幾個IP地址,然後檢查幾種方法是否可以成功下載已知文件。如果其中一種方法可以成功下載文件,它應該轉到下一個IP並再次執行相同的操作。
到目前爲止,我使用的foreach循環遍歷包含IP的數組,並創建一個名爲「IPxx」的文件夾以及FTP和HTTP URI,因爲我事先不知道哪個IP需要FTP或HTTP地址:
string[] ipArray = new string[4];
ipArray[0]= "xxx.xxx.xxx.xx";
ipArray[1]= "xxx.xxx.xxx.xx";
ipArray[2]= "xxx.xxx.xxx.xx";
ipArray[3]= "xxx.xxx.xxx.xx";
foreach(string ip in ipArray)
{
string ipXx = "IP" + ip.Substring(ip.Length-2);
string ipOrdner = folder + @"\" + ipXx;
Directory.CreateDirectory(ipOrdner);
string ftpAddr= "ftp://" + ip;
string httpAddr= "http://"+ip;
//DownloadTestMethod(httpAddr, ipFolder);
//DownloadTestMethod2(ftpAddr, ipFolder);
//DownloadTestMethod3(htppAddr, ipFolder);
}
到目前爲止,一切達到這個水平是按預期工作。 但是,我需要經歷幾種下載方法並檢查是否可以成功下載文件,但如果不能,則應該轉到下一個DownloadMethod並嘗試相同方法。
我想出了以下DownloadTestMethod:
public static void DownloadTestMethod(string httpAddr, string ipFolder)
{
string fileName = "test_10k.bin";
string downloadpath = httpAddr + "/" + fileName;
// I want it to check if the http site is online/working
WebRequest request = WebRequest.Create(downloadpath);
request.Proxy.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response != null)
{
WebClient webClient = new WebClient();
webClient.Proxy.Credentials=CredentialCache.DefaultCredentials;
webClient.DownloadFile(downloadpath, ipFolder + @"\" + fileName);
}
}
它正在爲一個成功下載的文件,但我似乎得到「卡」在這種方法中,如果該方法不能下載請求的文件。 在這種情況下,我希望它跳轉到下一個DownloadMethod並再次檢查,直到檢查了所有方法。此外,如果程序經歷了每個IP並且無法下載anytrhing,我希望它發送一封自動電子郵件。我知道如何實施EmailMethod,但我又一次遇到了流量控制問題。
我是一個絕對的初學者,不知道如何從這裏去得到我想要的流程。