您的位置: 旅游網 > 影視 >> 紀錄片

    中利用協議實現多線程斷點續傳牛

    發布時間:2021-10-28 05:37:28

    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進行多線程和斷點續傳文件下載了。

    福州治療宮頸糜爛費用
    英太青凝膠有哪些功效
    湖州治療陽痿多少錢
    猜你會喜歡的
    猜你會喜歡的
    主站蜘蛛池模板: 有色视频在线观看免费高清在线直播| www.夜夜操.com| 色网站在线播放| 成人乱码一区二区三区AV| 人人妻人人玩人人澡人人爽 | 欧美又粗又大又硬又长又爽视频| 国产恋夜精品全部护士| 中文字幕国产日韩| 波多野结衣电影区一区二区三区| 国产亚洲第一页| gogo免费在线观看| 欧美国产日本高清不卡| 全黄a免费一级毛片人人爱| 131美女爱做免费毛片| 欧美一区欧美二区| 国产三级精品三级在专区中文| japanesexxxxhd熟睡直播| 日本特黄特色aaa大片免费| 免费高清av一区二区三区| 黄色毛片在线观看| 国产超碰人人模人人爽人人喊| 久久精品无码专区免费青青| 波多野结衣之cesd819| 国产成人高清精品免费鸭子| 一级片黄色免费| 欧美在线成人午夜网站| 免费污视频在线| 色老头老太xxxxbbbb| 国产精品一区不卡| 中文字幕在线网址| 最近中文字幕mv高清在线视频| 亚洲理论在线观看| 精品a在线观看| 国产日韩欧美不卡在线二区| 一级二级三级黄色片| 欧美三级在线观看播放| 人人色在线视频播放| 美女张开腿黄网站免费| 国产精品女人呻吟在线观看| bbbbbbbw日本| 成人免费视频88|