999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

方便業務維護打造專用FTP工具

2012-12-31 00:00:00白亦霆徐懷平
計算機時代 2012年10期

摘要: 介紹了使用Windows系統級DLL對FTP調用的功能,采用C#編程實現了一個專用的FTP工具,用于完成業務系統的上傳、更新、同步等功能,并具有提供業務中FTP對比的特色功能。

關鍵詞: FTP; 更新; 同步; 比對

中圖分類號:TP311.1 文獻標志碼:A 文章編號:1006-8228(2012)10-07-05

引言

在業務系統中,FTP對于軟件的發布、內部工具的更新等起著極為重要的作用。本文介紹如何使用C#編程實現一個專用的FTP工具,用于完成業務系統的上傳、更新、同步等功能,并具有提供業務中FTP對比的特色功能。

1 實現目標與思路

1.1 實現目標

常用的FTP工具大多基于交互界面,為了工具使用的方便性,采用命令行的方式來實現對應的功能更有價值。因此,我們要達成以下目的:

⑴ 用命令行完成一個目錄的上傳下載(非常適用于更新,能夠雙擊或者是一個快捷鍵就能完成FTP的同步);

⑵ FTP是否傳輸正確,通過命令行完成比對(提供快速比對和完全比對),它實際上等于全部下載后(在內存)比較;也可進行快速比對,每個文件首先判斷大小是否相同,如果大小相同,則只取指定長度的內容作比較,起初步判斷作用。

因此,對工具的使用我們定義成以下的格式:

⑴ Myftp -up d:\\sj FTP目錄:完成 d:\\sj上傳到FTP目錄;

⑵ Myftp -down FTP目錄d:\\sj:完成從FTP目錄下傳到d:\\sj目錄;

⑶ Myftp -c d:\\sj FTP目錄:確認本地目錄d:\\sj是否都已經正確上傳至FTP;

⑷ Myftp -c -q5120 d:\\sj FTP目錄:功能與⑶相同,但是-q的選項用于快速比較,-q后面表示比較的字節數,如果文件長度相同,則讀取相應的字節數與本地文件進行比較,判斷其是否相同,從而完成一定程度上的快速比較。

1.2 實現的基本思路

為了使工具具有方便性,因此要實現:

⑴ 根據傳入的命令行參數解析對應功能;

⑵ 針對不同目標,完成對應功能處理。

1.3 實現難點

為了實現相應的功能,仔細分析了FTP的特點,我們所面臨的幾個基本問題是:

⑴ FTP文件的上下傳輸處理

在上下傳輸處理中,使用系統的API方式處理FTP的方法,需要集中的一個namespace中來處理。

⑵ FTP目錄單進程非遞歸遍歷的實現方法

與FTP交互是一個單線程的過程,但是FTP目錄和本地文件目錄結果類似,它是一個樹型結構,要處理它的單線程又無法使用遞歸實現就成了問題。在程序中我們使用了數組來實現它的遞歸效果;并且在每次處理時,實現只處理目錄的當前層,勿需同時在多個目錄間來回折騰。

⑶ 虛擬動態數組

由于使用的目錄和文件數的總個數并不確定,因此在程序中我們要實現數組的動態擴展功能,其實這只要使用C#中的list類型就可以實現,這樣,容器最終可以保留下來所有的子目錄和文件列表。

2 具體實現

根據功能劃分,我們的主流程是命令行解析和對應功能的處理。下面我們按命令行解析和具體每一項功能的處理來進行具體分析和說明,針對主程序和各功能的實現進行描述。

2.1 命令行的解析處理

在C#的主程序處理中和C非常類似,對于傳入的參數在main主程序中(program.cs):

我們針對命令行中不同的參數進行分支處理,轉向了具體的功能實現,分別有上傳、下載、對比,在對比功能中有輔助參數,就是對比時選擇長度的功能處理。通過分支處理后,程序就顯得條理清晰。

接下來描述如何實現FTP的上傳、下載與對比功能。

2.2 FTP處理

對于FTP的子功能處理,我們在namespace MyProFTP中,封裝了調用系統wininet.dll時所使用到的以下數據:

⑴ 結構數據:FILETIME、WIN32_FIND_DATA、Itemftp;

⑵ 相關函數調用的類FtpDll。

對于具體的FTP處理使用以下的處理流程:

⑴ 首先連接FTP;

⑵ 取得FTP上的文件目錄清單;

⑶ 下載時將FTP上的文件同步到本地目錄;

⑷ 如果是文件比對,則和下載相似,只要將FTP上文件內容讀取到內容和本地文件內容進行比較(二進制流的比較);

⑸ 如果是快速比較,則從FTP上讀取的信息只要是用戶指定的長度即可。

有關FTP具體功能的處理,定義了namespae myftp,里面有FTP上下傳與對比的處理方法。

2.2.1 從FTP下載

功能使用方法說明:

在整個下載過程中:

⑴ 通過MyFtp.fun_Connect連接指定的FTP信息:在fun_Connect中完成對FTP命令行參數中指定的FTP進行連接,通過InternetOpen來初始化連接,并使用InternetConnect來完成使用指定用戶進行建立鏈接。

⑵ MyFtp.fun_FtpDirs完成了對ftp目錄及子目錄的遍歷:實際上在類ftpdll的私有函數private int fun_FtpDirs(string as_dir, Boolean ab_Build)中,把當前目錄下的目錄名與文件名加入到列表中。因此使用類型List來作為動態的文件列表,保留了文件名、FTP目錄、全路徑文件名和是否目錄四個屬性,在每一次調用了函數后,列表就會自動變化,這樣我們就通過循環的方式完成了對遞歸方式的實現,這是對于FTP無法同時訪問多個目錄或者是需要不停地切換當前目錄的一種好的變通處理方法,因為不停切換當前目錄的開銷更大更麻煩。

針對要取得的所有文件,依次下載在FTP上的所有文件,使用MyFtp.fun_downfile來完成:此功能只是對指定文件進行下載。

由于工具通過系統級的wininet.dll來對FTP進行處理,因此功能上還具有非常強的兼容性的。為保證文件的正確性,文件傳輸時使用BINARY即流格式。

2.2.2 上傳至FTP

功能使用方法說明:

主要是兩個主流程:

⑴ 取得本地的所有文件與文件夾的清單,通過函數fun_locfiles來完成:

//搜索當前目錄所有文件

我們也使用了循環方式來完成遞歸對樹型結構的目錄及文件信息的獲取。

⑵ 每次只要處理單個文件的上傳:

如果是目錄,則判斷FTP上目錄是否存在,如果不存在,則只需建立相應的目錄即可。

由此可見,對于單文件上傳非常簡單,只要使用dll中對應的函數就可以完成。

對于文件的上傳和下載,我們在功能上都已經完成了,相比之下,實現比對功能并不是復雜的問題,但其過程會復雜一些。

2.2.3 文件比對

文件比對其實整合了文件下載和本地文件讀取的功能,它要比較相應的文件在FTP是否正確上傳,所以需檢測FTP上的文件是否和本地相同,而對本地刪除的文件并不作處理。命令的用法如下:

實際使用效果如圖3所示。

圖3 文件比對實際使用效果圖

在實現時,連接FTP后取FTP上對應的目錄,循環也以本地為主。本地與FTP可能存在差異,我們取FTP對應目錄下的文件與目錄信息。

⑴ 文件或目錄在FTP上不存在,可以利用ftpdll.fun_findftp函數在ftpfiles中直接找出。

⑵ 如果發現目錄不存在,則自動從locfiles中剔除了同一目錄及子目錄下的所有文件及目錄(不需要再作比較),只需要告知目錄不存在即可。

⑶ 當文件存在時,打開FTP文件句柄取得長度后與本地文件進行比較,若發現長度不同,則確定文件是不同的。

⑷ 如果長度相同,此時就可以根據傳入參數來決定是整個文件與本地文件進行比較還是讀取限定長度來進行比較。

在函數fun_FtpCompare中完成本地目錄和ftp目錄之間的文件比較,判別是否正確上傳,編碼如下:

結合文件下載和上傳,使用MyFtp.fun_FtpDirs取得了FTP上的文件列表,然后依次比較文件夾和文件是否存在,及相應的文件是否相同。

考慮到有的文件過大,因此為檢測提供了抽樣比較的方法,就是可以讀取一個大文件的指定長度來進行快速檢測。它的命令行是:

該命令行表示對文件最多只抽取128000字節進行檢測,這樣,當大文件很多時,就不需要從ftp上讀取文件的全部內容來進行比較,可以選擇快速比較,雖然快速比較的結果不一定完全正確,但是有時可以進行臨時性地快速比較,還是很有價值的。

在文件比較函數fun_Compare中,以下我們提供了全文件的比較和抽取部分長度的比較方法(//2010-01-25比對相應的文件時用到的四個參數是:本地文件,是否目錄,本地路徑,提示內容)。

在文件比對時,若長度不同或者是文件不存在,可以即時返回,而長度相同時就需要讀取內容進行比較;當有限定長度時,只比對指定長度(大于文件長度時,只取文件長度)。

3 結束語

本文介紹了使用Windows系統級DLL對FTP調用的功能,它不僅可以完成用戶對FTP的更新和下載功能,而且還可以進行FTP的比對和快速比對,使FTP的維護變得更為簡單易用。這樣的工具使實際業務操作變得更方便。

當然,如果想在此基礎上擴展其他功能仍是可行的,但就目前所提供的功能在實際使用中已是極大地方便了維護工作,具有較大的推廣價值。

參考文獻:

[1] 冀志剛,王祥.用JAVA語言實現FTP客戶端[J].唐山師范學院學報,2006.28(5):81-82

[2] 李斌.FTP文件搜索引擎的實現(二)[J].電腦編程技巧與維護,2012.9:63

[3] 蔡永.FTP服務器技術研究及實現[D].電子科技大學碩士學位論文,2005.

[4] (美)派克(Pike,M.A.),(美)埃斯塔布魯克(Estabrook,N.)著, 肖紹良,馮雷譯.Internet FTP用戶使用指南[M].科學出版社,1996年.

[5] 數位文化編著.FTP總司令[M].北京大學出版社,2000.

主站蜘蛛池模板: 国产经典免费播放视频| 玖玖精品视频在线观看| 日韩精品视频久久| 毛片三级在线观看| 久久一日本道色综合久久| 精品无码国产一区二区三区AV| 国产在线小视频| 中文字幕人妻无码系列第三区| 毛片在线播放网址| 国产精品va| 国产日韩欧美在线视频免费观看| 亚洲成人黄色网址| 国产免费一级精品视频| 国产美女精品在线| 亚洲国产成人在线| 欧美日韩第二页| 视频二区国产精品职场同事| 国产中文一区二区苍井空| 国产成人精品视频一区视频二区| 国产91视频免费观看| 四虎在线观看视频高清无码 | 制服丝袜国产精品| 亚洲国产日韩视频观看| 国产成人综合亚洲欧美在| 精品伊人久久久香线蕉 | 国产精品久久久久无码网站| 亚洲一区二区精品无码久久久| 日本一本正道综合久久dvd| 国产成人区在线观看视频| 亚洲精品在线观看91| 中文字幕 欧美日韩| 好紧太爽了视频免费无码| 国产麻豆另类AV| 最新精品国偷自产在线| 久久综合成人| 九九热精品在线视频| 亚洲 欧美 日韩综合一区| 在线综合亚洲欧美网站| 精品精品国产高清A毛片| 亚洲IV视频免费在线光看| 亚洲大尺码专区影院| 青青草原国产精品啪啪视频| 国产美女自慰在线观看| 免费国产高清精品一区在线| 秋霞国产在线| 精品一区二区三区中文字幕| 精品久久高清| 久久99国产综合精品女同| 五月天综合婷婷| 日本成人在线不卡视频| 99热这里只有精品国产99| 亚洲中文字幕在线观看| 国产18在线播放| 午夜a视频| 成人综合网址| 国产在线一区视频| 91香蕉国产亚洲一二三区| 国产成人免费手机在线观看视频| a级毛片免费网站| 亚洲免费成人网| 午夜啪啪网| 沈阳少妇高潮在线| 国产成在线观看免费视频| 精品国产网| 日韩黄色在线| 青青草原国产| 亚洲AⅤ永久无码精品毛片| www亚洲天堂| 欧美成人午夜在线全部免费| 国产精品一老牛影视频| 久久久久人妻一区精品色奶水| 在线色国产| 玖玖精品视频在线观看| 欧美日韩中文字幕二区三区| 欧美a在线视频| 国产一区三区二区中文在线| 久久精品欧美一区二区| 国产成人1024精品| 亚洲人成网线在线播放va| 日韩欧美综合在线制服| 国产一级妓女av网站| YW尤物AV无码国产在线观看|