資源描述:
《【精品】VC中ftp協(xié)議實(shí)現(xiàn)多線程斷點(diǎn)續(xù)傳.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、ftp下載的好處我在這里就不多說了,許多工程會把ftp下載作為一個重要的功能來實(shí)現(xiàn)。微軟提供的Winlnet類可以利用下面這些函數(shù):InternetOpen;InternetConnect;GetCurrentDirectory;SetCurrentDirectory;FtpGetFile;很容易實(shí)現(xiàn)ftp的下載,網(wǎng)上關(guān)于這方面的文章也很多。但是要實(shí)現(xiàn)ftp的多線穆下載,利用這些函數(shù)就顯得有些牽強(qiáng)了。用socket根據(jù)ftp協(xié)議來開發(fā)將會變的十分靈活。下面我就逐步的講解整個開發(fā)的過程:開發(fā)環(huán)境BCB(
2、紐.件模式),VC環(huán)境下請自行稍作改動??戳诉@篇文章后對于BCB開發(fā)人員來說,不僅可以對FlashGet等軟件的開發(fā)原理有一定的了解,特別是在開發(fā)紐件方面也有很大的指導(dǎo)作用,請耐心的將它看完。很簡單??!首先介紹一下部分ftp協(xié)議:I/-lII用戶
3、丨II接口
4、<一->
5、用戶I
6、一?一/I
7、/
8、FTP命令
9、/V
10、II服務(wù)器K>1User
11、
12、IIPIIIFTP響應(yīng)
13、
14、PI
15、
16、11——/1
17、————/
18、IIIIIII/~V
19、數(shù)據(jù)
20、/V
21、1文件
22、<—>1服務(wù)器
23、《一—>1用戶1<—>1文件11系
24、統(tǒng)丨IIDTP
25、
26、連接IIDTPII1系統(tǒng)I
27、——/IIV服務(wù)器FTP用戶FTP圖一FTP服務(wù)示意圖用八FTP和服務(wù)器FTP之間要傳送文件,需要有兩個連接:命令通道和數(shù)據(jù)連接,從名字上就可以看出命令通道是傳送命令的,數(shù)據(jù)通道是用于傳送文件。服務(wù)器與服務(wù)器之間的數(shù)據(jù)傳送在此就不多作解釋。主要用到的命令為:USER,PASS,TYPE,SIZE,REST,CWD,PWD,RETR,PASV,PORT,QUIT;USER:參數(shù)是標(biāo)記用戶的Telnet串。用八標(biāo)記是訪問服務(wù)器必須的,此命令通簾是控制連接后第
28、一個發(fā)出的命令,有些主機(jī)述會要求口令和帳戶。服務(wù)器可以在任何時間接收新的USER命令以改變訪問控制和(或)帳戶信息。這可以重新開始登錄過程,所以傳輸參數(shù)不變,在進(jìn)行中的文件傳輸在過去的訪問控制參數(shù)下完成。PASS:參數(shù)是標(biāo)記用八口令的Telnet串。此命令緊跟USER命令,在某些站點(diǎn)它是完成訪問控制不可缺少的一步。因此口令是個重要的東西,因此不能顯示出來,服務(wù)器方?jīng)]有辦法隱藏口令,所以這一任務(wù)得山用戶FTP進(jìn)程完成。TYPE:參數(shù)指定表示類型。有些類型需要第二個參數(shù),第一個參數(shù)山單個Telnet字符定
29、義,第二個參數(shù)是十進(jìn)制整數(shù)指定字節(jié)大小,參數(shù)間以vSP>分隔。下面是格式:A-ASCII
30、
31、N-Non-print
32、T-TelnetformateffectorsE-EBCDIC
33、
34、C-CarriageControl(ASA)/I"ImageL〈字節(jié)大小〉-本地字節(jié)大小圖二TYPE參數(shù)示意圖默認(rèn)表示類型是ASCII非打印字符,如果參數(shù)未改變,以后只改變了第一個參數(shù),則使用默認(rèn)值°SIZE:參數(shù)從FTP服務(wù)器上返冋指定文件的大小。REST:參數(shù)域代農(nóng)服務(wù)器耍重新開始的那一點(diǎn),此命令并不傳送文件,而是略
35、過指定點(diǎn)后的數(shù)據(jù),此命令后應(yīng)該跟英它要求文件傳輸?shù)腇TP命令。CWD:此命令使用戶可以在不同的目錄或數(shù)據(jù)集下工作而不用改變它的登錄或帳戶信息。傳輸參數(shù)也不變。參數(shù)一般是目錄名或與系統(tǒng)相關(guān)的文件集合。PWD:改變當(dāng)詢的工作目錄。RETR:開始傳送指定的文件°(從REST參數(shù)指定的偏移量開始傳送)PASV:此命令要求服務(wù)器DTP在指定的數(shù)據(jù)端口偵聽,進(jìn)入被動接收請求的狀態(tài),參數(shù)是主機(jī)和端口地址。PORT:參數(shù)是要使用的數(shù)據(jù)連接端口,通常情況下對此不需要命令響應(yīng)。如果使用此命令時,要發(fā)送32位的IP地址和1
36、6位的TCP端口號。上面的信息以8位為一組,逗號間隔十進(jìn)制傳輸。QUIT:退出登錄。各個參數(shù)的具體用法舉例如下:USERsandyr//用戶名為sandy登錄PASSsandyr//密碼為sandyTYPEIrSIZEsandy.txtr//如果sandy.txt文件存在,則返冋該文件的大小REST100r〃重新指定文件傳送的偏移CWDinfor/r//獲収當(dāng)前的工作目錄PWDtemp/r//改變當(dāng)前的工作目錄RETRr//開始傳送文件PASVr/
37、/進(jìn)入被動模式PORTh1,h2,h3Jh4,p1Jp2r//進(jìn)入主動模式,hi,h2,h3,h4為ip地址的4個部分。p1,p2是16進(jìn)制的端口號下面介紹一下各個函數(shù)的使用順序和-?些應(yīng)注意的地方:使用這些命令的前提條件是客戶端和服務(wù)器端建立了連接。比如ftp服務(wù)器地址:192.16&1.81,端口:210那么利用Winsock的API函數(shù)建立socket連接,然后使用USER,PASS登陸FTP服務(wù)器.需要下載文件,要確保文件必須在當(dāng)前工作目錄