中利用協議實現多線程斷點續傳牛
FTP下載的好處我在這里就不多說了,許多工程會把FTP下載作為一個重要的功能來實現。微軟提供的WinInet類可以利用下面這些函數:
InternetOpen;
InternetConnect;
GetCurrentDirectory;
SetCurrentDirectory;
FTPGetFile;
很容易實現FTP的下載,上關于這方面的文章也很多。但是要實現FTP的多線程下載,利用這些函數就顯得有些牽強了。用socket根據FTP協議來開發將會變的十分靈活。下面我就逐步的講解整個開發的過程:開發環境 BCB(組件模式),VC 環境下請自行稍作改動。看了這篇文章后對于BCB開發人員來說,不僅可以對 FlashGet 等軟件的開發原理有一定的了解,特別是在開發組件方面也有很大的指導作用,請耐心的將它看完。很簡單!! 首先介紹一下部分FTP協議:
圖一 FTP服務示意圖
用戶FTP和服務器FTP之間要傳送文件,需要有兩個連接:命令通道和數據連接,從名字上就可以看出命令通道是傳送命令的,數據通道是用于傳送文件。服務器與服務器之間的數據傳送在此就不多作解釋。
主要用到的命令為:USER,PASS,TYPE,SIZE,REST,CWD,PWD,RETR,PASV,PORT,QUIT;
USER:參數是標記用戶的Telnet串。用戶標記是訪問服務器必須的,此命令通常是控制連接后第一個發出的命令,有些主機還會要求口令和帳戶。服務器可以在任何時間接收新的USER命令以改變訪問控制和(或)帳戶信息。這可以重新開始登錄過程,所以傳輸參數不變,在進行中的文件傳輸在過去的訪問控制參數下完成。
PASS:參數是標記用戶口令的Telnet串。此命令緊跟USER命令,在某些站點它是完成訪問控制不可缺少的一步。因此口令是個重要的東西,因此不能顯示出來,服務器方沒有辦法隱藏口令,所以這一任務得由用戶FTP進程完成。
TYPE:參數指定表示類型。有些類型需要第二個參數,第一個參數由單個Telnet字符定義,第二個參數是十進制整數指定字節大小,參數間以SP分隔。下面是格式:
接著便是每天長達42.195公里的奔跑……這樣的生活節奏 圖二 TYPE參數示意圖
默認表示類型是ASCII非打印字符,如果參數未改變,以后只改變了第一個參數,則使用默認值。
SIZE:參數從FTP服務器上返回指定文件的大小。
REST:參數域代表服務器要重新開始的那一點,此命令并不傳送文件,而是略過指定點后的數據,此命令后應該跟其它要求文件傳輸的FTP命令。
CWD:此命令使用戶可以在不同的目錄或數據集下工作而不用改變它的登錄或帳戶信息。傳輸參數也不變。參數一般是目錄名或與系統相關的文件集合。
PWD:改變當前的工作目錄。
RETR:開始傳送指定的文件。(從REST參數指定的偏移量開始傳送)
PASV:此命令要求服務器DTP在指定的數據端口偵聽,進入被動接收請求的狀態,參數是主機和端口地址。
PORT:參數是要使用的數據連接端口,通常情況下對此不需要命令響應。如果使用此命令時,要發送32位的IP地址和16位的TCP端口號。上面的信息以8位為一組,逗號間隔十進制傳輸。
QUIT:退出登錄。
各個參數的具體用法舉例如下:
USER sandy \\r\\n //用戶名為sandy登錄PASS sandy \\r\\n //密碼為sandyTYPE I \\r\\n SIZE t \\r\\n //如果t文件存在,則返回該文件的大小REST 100 \\r\\n //重新指定文件傳送的偏移CWD infor/ \\r\\n //獲取當前的工作目錄 PWD temp/ \\r\\n //改變當前的工作目錄 RETR \\r\\n //開始傳送文件 PASV \\r\\n //進入被動模式 PORT h1,h2,h3,h4,p1,p2 \\r\\n //進入主動模式,h1,h2,h3,h4為ip地址的4個部分。p1,p2是16進制的端口號。
下面介紹一下各個函數的使用順序和一些應注意的地方:
使用這些命令的前提條件是客戶端和服務器端建立了連接。比如FTP服務器地址:192.168.1.81 ,端口:21。那么利用Winsock的API函數建立socket連接,然后使用USER,PASS登陸FTP服務器.需要下載文件,要確保文件必須在當前工作目錄下,可以使用命令CWD和PWD。查看和更改當前的工作目錄。使用SIZE命令獲取文件的大小。我們想要多線程下載那么就要求服務器支持該功能。一般我們都會在開頭先使用REST命令判斷該FTP站點是否支持多線程下載。PORT和PASV兩個命令是用來建立數據連接的。他們的主要區別是:PORT需要你指定一個ip地址和端口與服務器建立連接。PASV命令服務器會返回h1,h2,h3,h4,p1,p2樣式 的數據供客戶端連接。等數據連接建立后,就可以了使用REST,RETR進行多線程和斷點續傳文件下載了。
福州治療宮頸糜爛費用英太青凝膠有哪些功效
湖州治療陽痿多少錢
- 羅俊杰:提振工業在經濟上仍然具有堅實的基礎
- 面相二王眉:正二王倒二王
- 芬蘭將成為第三個被俄羅斯斷供煤的歐洲國家
- 普邦股份近期公告:董事葉勁楓、全小燕擬合計減持不超120.48萬股
- 《全境封鎖2》新新版本路線圖 第10賽季8月上線
- 此人勾引閻婆惜,將宋江逼上梁山,宋江為何不處置他?
- 糖體碰撞質量控制不足會破壞蛋白穩態導致神經退行性營養不良的發生
- 趙薇的家境怎么樣 趙薇的成功是依靠什么呢
- 北京積水潭醫院參贊昌平區隔離點醫療隊:不畏挑戰,不辱使命
- 歐洲主要股指集體收漲 瑞士DAX30指數漲0.7%
- 趙露思曬與友人游玩照!扭腰腳踏胯身材婀娜,緊身褲勒出細長大腿
- 無論工作能力有多笨,做好這四點,也能被他組織重視