ftp從服務器上獲取通訊設備吐出的mr數據,該方案估計在通訊行業上一個很廣泛的一種方案,很奇怪爲何不把這些數據直接存儲到數據庫中呢,好比hadoop,反而還須要第三方搞網優的軟件開發人員從ftp上讀取成千萬的mr文件信息。數據庫
這種方案估計已經成公認的方案,可能緣由:c#
1,這樣的文件格式的不一樣意,數據庫很難定義格式,規則;windows
2,數據庫的制約行吧,數據庫比起寫文件來講仍是差了不少吧。無論從速度上,仍是靈活性來講,使用數據庫在通訊服務商來講該方案不可行性,簡直是不接受。服務器
很天然的事情,咱們不是隻讀本地幾十,幾百G的文件了,而是要變成從ftp上獲取到這麼多數據,以後去處理這些數據。該須要對軟件來講,無心ftp的穩定性,網絡的穩定性必要要求高。網絡
因此這種方案,必須ftp的服務必須在內網,外網的方式估計做死的節奏。內網對網絡傳輸速度,穩定性方面已經提高了不少。ide
其次咱們要處理的事情,要求:oop
1,) 使用c#去讀取ftp上的數據,該技術已經很成熟。測試
2,) 須要測試本身部署一個ftp服務,使用ftp客戶端來調試,獲取ftp信息,能獲取到什麼信息。spa
搭建serv-u:調試
1,)從網絡上下載serv-u,我選擇了低版本的ftp,
2,)配置好帳戶,分配用戶:test,密碼:123456,權限adiminstrator,全部權限(讀、寫、刪、移動、重命名文件|文件夾);
爲了調試ftp服務及帳號狀態,須要下載一個ftp客戶端.
我使用cute ftp,
鏈接地址localhost,帳號輸入test,密碼輸入:123456,測試沒問題,正常聯通:
怎麼使用c#讀取ftp上相關信息:
看到codeplex上已經有人寫出來無缺的ftp client類(開源代碼地址:http://ftplib.codeplex.com/,該類庫使用的方式是經過windows內核接口來獲取),就拿來測試了
測試代碼:
const string HOSTNAME = "localhost"; const string USERNAME = "test"; const string PASSWORD = "123456"; static void Main(string[] args) { using (FtpConnection ftp = new FtpConnection(HOSTNAME, USERNAME, PASSWORD)) { ftp.Open(); /* Open the FTP connection */ ftp.Login(); /* Login using previously provided credentials */ if (ftp.DirectoryExists("/test")) /* check that a directory exists */ ftp.SetCurrentDirectory("/test"); /* change current directory */
ftp.SetLocalDirectory(@"E:\ftp-test");
if (ftp.FileExists("/test/1/dn.accdb")) /* check that a file exists */
ftp.GetFile("/test/1/dn.accdb", @"E:\ftp-test\1\dn.accdb", false); /* download /incoming/file.txt as file.txt to current executing directory, overwrite if it exists */
//do some processing //try //{ // ftp.SetCurrentDirectory("/outgoing"); // ftp.PutFile(@"c:\localfile.txt", "file.txt"); /* upload c:\localfile.txt to the current ftp directory as file.txt */ //} //catch (FtpException ex) //{ // Console.WriteLine(String.Format("FTP Error: {0} {1}", ex.ErrorCode, ex.Message)); //} foreach (var dir in ftp.GetDirectories()) { Console.WriteLine(dir.Name); foreach (var file in dir.GetFiles(dir.Name)) { Console.WriteLine(file.Name); } } Console.ReadKey(); } }
輸入結果都可以正常鏈接,獲取信息:
以上算是一個測試ftp的一個過程吧,但針對咱們的項目,這些是一個基本功。
但願有更多牛人,給更多的建議...