Re: Flashget的工作怎辦到的

看板Programming作者時間17年前 (2006/10/28 12:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
※ 引述《LPH66.bbs@ptt.cc (涼宮春日症候群)》之銘言: > ※ 引述《DrLiang.bbs@bbs.ccns.ncku.edu.tw (台灣黑山豬)》之銘言: > : 諸如 FlashGet 的軟體之所以能快速下載檔案, > : 是因為他將檔案分割為數份並下載,下載完成後再進行合併。 > : 我比較好奇的是,這種軟體是如何在Server端分割檔案? > 這我剛好知道 > HTTP Request有一種header是可以指定起始點的 > Range: bytes=範圍 以數字-數字表示 單位為Byte > ex: Range: bytes=1307176- 就表示從1307176byte開始抓到完 > 不過當然要看伺服器吃不吃 > 伺服器吃的話會回傳206 Partial Content 並從那個地方開始 > 伺服器不理這個header則正常傳回200 OK 並從頭開始 > 所以FlashGet就是一次開很多條連線 後面連線的就用Range: 從後面開始抓這樣 這邊有個呼叫 InternetReadFile API 來做續傳的程式碼: http://tlcheng.twbbs.org/TLCheng/Net/NetList.aspx ?Action=Function&Module=12&Function=67 因此,實體檔案先開完整大小,再以 binary 方式直接寫入指定位置即可多線下載。 若使用 Windows API ,則必須改註冊檔,讓他可以多線連接,所以自己寫會比較好。 另外,線數最好不要開太多,先前我試過針對單一網站開到 256 線,結果 proxy.hinet.net 誤判為惡意程式直接把我的要求全擋掉了,問 HiNet客服說沒這 樣設定,據其他討論區技術人員說,這應該是 proxy預設值,只是 HiNet客服不清 楚,他舉例說,例如 ISA Server 預設是 10 線,超過就擋。HiNet 我試過 32 線 還不會擋。 -- ______________________________________________________本版因有你們而壯大 T.L. Cheng 子璉 _______________________________________________________________________ VB討論:成大資工、程式設計樂園等採tw.bbs.comp.lang.basic信區,請各站加入轉信 徐昇網&論壇&API&輔助說明檔&福傳語言&原始碼 http://tlcheng.twbbs.org/wwwmap.htm 培基語言網頁 http://tlcheng.twbbs.org/TLCheng/Basic/ -- oRigiN: BBS(140.116.246.178) bbs.csie.ncku.edu.tw FrOm:59-127-4-39.HINET-IP.hinet.net
文章代碼(AID): #15Gjr200 (Programming)
文章代碼(AID): #15Gjr200 (Programming)