日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

用Java實現斷點續傳(HTTP

瀏覽:215日期:2024-06-21 09:50:09
內容: 出自:鐘華 用Java實現斷點續傳(HTTP) 內容: (一)斷點續傳的原理 (二)Java實現斷點續傳的關鍵幾點 (三)斷點續傳內核的實現 關于作者 鐘華 (zhong_hua@263.net)2001 年 5 月(一)斷點續傳的原理 其實斷點續傳的原理很簡單,就是在Http的請求上和一般的下載有所不同而已。打個比方,瀏覽器請求服務器上的一個文時,所發出的請求如下:假設服務器域名為wwww.sjtu.edu.cn,文件名為down.zip。GET /down.zip HTTP/1.1Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */*Accept-Language: zh-cnAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Connection: Keep-Alive服務器收到請求后,按要求尋找請求的文件,提取文件的信息,然后返回給瀏覽器,返回信息如下:200Content-Length=106786028Accept-Ranges=bytesDate=Mon, 30 Apr 2001 12:56:11 GMTETag=W/'02ca57e173c11:95b'Content-Type=application/octet-streamServer=Microsoft-IIS/5.0Last-Modified=Mon, 30 Apr 2001 12:56:11 GMT所謂斷點續傳,也就是要從文件已經下載的地方開始繼續下載。所以在客戶端瀏覽器傳給Web服務器的時候要多加一條信息--從哪里開始。下面是用自己編的一個'瀏覽器'來傳遞請求信息給Web服務器,要求從2000070字節開始。GET /down.zip HTTP/1.0User-Agent: NetFoxRANGE: bytes=2000070-Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2仔細看一下就會發現多了一行RANGE: bytes=2000070-這一行的意思就是告訴服務器down.zip這個文件從2000070字節開始傳,前面的字節不用傳了。服務器收到這個請求以后,返回的信息如下:206Content-Length=106786028Content-Range=bytes 2000070-106786027/106786028Date=Mon, 30 Apr 2001 12:55:20 GMTETag=W/'02ca57e173c11:95b'Content-Type=application/octet-streamServer=Microsoft-IIS/5.0Last-Modified=Mon, 30 Apr 2001 12:55:20 GMT和前面服務器返回的信息比較一下,就會發現增加了一行:Content-Range=bytes 2000070-106786027/106786028返回的代碼也改為206了,而不再是200了。知道了以上原理,就可以進行斷點續傳的編程了。(二)Java實現斷點續傳的關鍵幾點 (1)用什么方法實現提交RANGE: bytes=2000070-。當然用最原始的Socket是肯定能完成的,不過那樣太費事了,其實Java的net包中提供了這種功能。代碼如下:URL url = new URL('http://www.sjtu.edu.cn/down.zip');HttpURLConnection httpConnection = (HttpURLConnection)url.openConnection();//設置User-AgenthttpConnection.setRequestProperty('User-Agent','NetFox');//設置斷點續傳的開始位置httpConnection.setRequestProperty('RANGE','bytes=2000070');//獲得輸入流InputStream input = httpConnection.getInputStream();從輸入流中取出的字節流就是down.zip文件從2000070開始的字節流。大家看,其實斷點續傳用Java實現起來還是很簡單的吧。接下來要做的事就是怎么保存獲得的流到文件中去了。保存文件采用的方法。我采用的是IO包中的RandAccessFile類。操作相當簡單,假設從2000070處開始保存文件,代碼如下:RandomAccess oSavedFile = new RandomAccessFile('down.zip','rw');long nPos = 2000070;//定位文件指針到nPos位置oSavedFile.seek(nPos);byte[] b = new byte[1024];int nRead;//從輸入流中讀入字節流,然后寫到文件中while((nRead=input.read(b,0,1024))> 0){oSavedFile.write(b,0,nRead);}怎么樣,也很簡單吧。接下來要做的就是整合成一個完整的程序了。包括一系列的線程控制等等。(三)斷點續傳內核的實現主要用了6個類,包括一個測試類。SiteFileFetch.java負責整個文件的抓取,控制內部線程(FileSplitterFetch類)。FileSplitterFetch.java負責部分文件的抓取。FileAccess.java負責文件的存儲。SiteInfoBean.java要抓取的文件的信息,如文件保存的目錄,名字,抓取文件的URL等。Utility.java工具類,放一些簡單的方法。TestMethod.java測試類。下面是源程序: /***SiteFileFetch.java*/package NetFox;import java.io.*;import java.net.*;public class SiteFileFetch extends Thread {SiteInfoBean siteInfoBean = null; //文件信息Beanlong[] nStartPos; //開始位置long[] nEndPos; //結束位置FileSplitterFetch[] fileSplitterFetch; //子線程對象long nFileLength; //文件長度boolean bFirst = true; //是否第一次取文件boolean bStop = false; //停止標志File tmpFile; //文件下載的臨時信息DataOutputStream output; //輸出到文件的輸出流public SiteFileFetch(SiteInfoBean bean) throws IOException{siteInfoBean = bean;//tmpFile = File.createTempFile ('zhong','1111',new File(bean.getSFilePath()));tmpFile = new File(bean.getSFilePath()+File.separator + bean.getSFileName()+'.info');if(tmpFile.exists ()){bFirst = false;read_nPos();}else{nStartPos = new long[bean.getNSplitter()];nEndPos = new long[bean.getNSplitter()];}}public void run(){//獲得文件長度//分割文件//實例FileSplitterFetch//啟動FileSplitterFetch線程//等待子線程返回try{if(bFirst){nFileLength = getFileSize();if(nFileLength == -1){System.err.println('File Length is not known!');}else if(nFileLength == -2){System.err.println('File is not access!');}else{for(int i=0;i
標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品啊啊啊| 欧美国产中文高清| 日韩美女精品| 亚洲精品美女91| 日韩av成人高清| 奇米777国产一区国产二区| 欧美一级一区| 日韩中文字幕| 日韩一区二区三区四区五区| 亚洲精品一区二区在线播放∴| 中文字幕一区二区精品区| 亚洲视频电影在线| 国产精品久久久久毛片大屁完整版| 91嫩草精品| 国产精品va视频| 亚洲啊v在线| 爽爽淫人综合网网站| 国产伦理一区| 国产主播一区| 日韩视频一区二区三区在线播放免费观看| 国精品一区二区| 国产精品2区| 国精品产品一区| av免费不卡国产观看| 久久久亚洲一区| 免费精品视频最新在线| 国户精品久久久久久久久久久不卡| 日韩中文字幕| 97人人精品| 亚洲精品乱码日韩| 欧美三级网址| 久久在线91| 免费日本视频一区| 久久中文字幕一区二区三区| 91成人精品| 国产伦精品一区二区三区视频| 日韩av福利| 日韩午夜视频在线| 色婷婷色综合| 欧美国产另类| 日本欧美大码aⅴ在线播放| а√在线中文在线新版| 国产精品一线天粉嫩av| 国产亚洲网站| 韩日一区二区| 精品国产三区在线| 毛片不卡一区二区| 伊人久久亚洲影院| 精品久久中文| 精品日本视频| 久久久久伊人| 日本欧美大码aⅴ在线播放| 亚洲激情黄色| 久久不见久久见免费视频7| 欧美日韩国产一区二区在线观看| 亚洲综合丁香| 国精品一区二区| 夜夜嗨一区二区| 精品捆绑调教一区二区三区 | 久热re这里精品视频在线6| 成人国产精品一区二区免费麻豆| 欧美91在线|欧美| 亚洲一二av| 水蜜桃久久夜色精品一区的特点| 99在线|亚洲一区二区| 99在线|亚洲一区二区| 99日韩精品| 日韩影院免费视频| 日韩一区二区三区在线看| 国产欧美日韩精品高清二区综合区 | 久久蜜桃精品| 国产中文一区| 蜜臀久久久99精品久久久久久| 在线一区二区三区视频| 青青草国产成人99久久| 日本不卡视频在线观看 | 日韩区欧美区| 国产精品一区二区美女视频免费看 | 亚洲综合中文| 久久激五月天综合精品| 欧美国产免费| 亚洲经典在线| 97成人在线| 精品一区二区三区亚洲| 日韩av在线播放网址| 欧美+亚洲+精品+三区| 欧美日韩色图| 免费人成精品欧美精品| 久久精品99久久久| 亚洲天堂一区二区| 久久亚洲图片| 蜜桃av在线播放| 国产午夜一区| 99热精品在线观看| 四虎国产精品免费观看| 久草免费在线视频| 婷婷亚洲精品| 蜜臀国产一区| 免费av一区| 日韩中文字幕| 国产成人a视频高清在线观看| 性感美女一区二区在线观看| 中文字幕日本一区二区| 亚洲黄色中文字幕| 免费看黄色91| 日本免费久久| 欧美激情麻豆| 日韩和欧美的一区| 亚洲电影有码| 狠狠久久伊人| 视频一区日韩精品| 伊人成人在线视频| 精品国产18久久久久久二百| 亚洲va久久| 日韩精品福利一区二区三区| 日韩不卡免费高清视频| 亚洲一区二区日韩| 国产中文一区| 日韩久久一区二区三区| 美女在线视频一区| 国产精成人品2018| 久久精品国产999大香线蕉| 亚洲精品九九| 日本欧美大码aⅴ在线播放| 日韩欧美四区| 日本aⅴ精品一区二区三区| 国产v综合v| 精品日产乱码久久久久久仙踪林| 日韩国产成人精品| 国产日韩中文在线中文字幕| 亚洲精品网址| 亚洲爱爱视频| 日韩一区三区| 亚洲人成在线网站| 久久精品人人| 国产91欧美| 水蜜桃久久夜色精品一区| 日韩精品社区| 国产亚洲欧美日韩精品一区二区三区 | 欧美aa在线观看| а√天堂中文在线资源8| 91亚洲一区| 福利片在线一区二区| 国产在线日韩精品| 高清av一区| 黄色免费成人| 久久精品99国产国产精| 精品一区二区三区中文字幕| 韩国一区二区三区视频| 麻豆成人综合网| 麻豆mv在线观看| 日韩精品麻豆| 天堂成人国产精品一区| 国产欧美一区二区精品久久久| 国产精品任我爽爆在线播放| 国产aⅴ精品一区二区四区| 亚洲黄页一区| 91精品国产自产精品男人的天堂| 欧美一区=区三区| 精品国产18久久久久久二百| 国产精品久久久久久久久久10秀| 成人久久久久| 国产日韩三级| 欧美日韩国产高清| 日本一区二区三区中文字幕| 九九久久国产| 欧美日韩国产探花| 国产激情综合| 免费观看在线综合| 国产成人精品亚洲线观看| 在线一区欧美| 日韩av免费大片| 蜜桃视频一区二区三区| 国产伦理久久久久久妇女| 丝袜美腿亚洲色图| 国产高潮在线| 欧美日本久久| 日韩一区二区三区四区五区| 成人免费电影网址| 老司机精品视频在线播放| 亚洲经典在线| 视频一区中文| 激情欧美亚洲| 欧美日韩一区二区三区不卡视频 | 美女视频免费精品| 国产一区欧美| 成人国产精品一区二区网站| 欧美国产免费| 97精品国产99久久久久久免费| 久久精品动漫| 国产精品成久久久久| 欧美激情福利| 精品欠久久久中文字幕加勒比| 国产亚洲观看| 亚洲精品综合| 亚洲欧美综合| 日韩美女一区二区三区在线观看| 四虎精品永久免费| 美美哒免费高清在线观看视频一区二区| 久久uomeier|