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

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

用Java實現斷點續傳(HTTP)

瀏覽:34日期:2024-06-23 14:55:41
內容: 用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久久,三上悠亚国产精品一区二区三区
日韩精品专区| 日韩国产在线| 香蕉久久久久久| 中文一区二区| 狠狠久久婷婷| 婷婷久久一区| 亚洲综合国产| 美美哒免费高清在线观看视频一区二区 | 女人天堂亚洲aⅴ在线观看| 精品国产乱码久久久| 国产一区2区| 91看片一区| 国产99亚洲| 在线一区欧美| 日韩高清不卡一区| 国产精品www.| 国产超碰精品| 亚洲精品a级片| 噜噜噜久久亚洲精品国产品小说| 蜜桃一区二区三区在线观看| 欧美日韩伊人| 麻豆视频在线观看免费网站黄| 新版的欧美在线视频| 欧美 日韩 国产一区二区在线视频| 亚洲第一精品影视| 亚洲视频国产精品| 国产精品白丝久久av网站| 久久精品二区亚洲w码| 日韩三区在线| 美女国产一区| 欧美日韩中文| 成人小电影网站| 99在线|亚洲一区二区| 日本麻豆一区二区三区视频| 国产精品国产三级国产在线观看| 精品一区亚洲| 奇米亚洲欧美| 国产成人精选| 免费日韩一区二区| 日本欧美一区二区在线观看| 欧美国产偷国产精品三区| 欧美日韩国产欧| 国产欧美另类| 欧美日韩尤物久久| 亚洲欧美在线综合| 成人片免费看| 天堂va在线高清一区| 国产aⅴ精品一区二区三区久久| 影音先锋久久| 国产精品视频3p| 欧美精品一区二区三区精品| 日韩福利视频一区| 久久久久久久久丰满| 人人精品久久| 日韩免费一区| 亚洲精品欧美| 欧美成a人免费观看久久| 国产毛片精品| 亚洲欧美激情诱惑| 另类专区亚洲| 日韩高清在线不卡| 99精品美女| 国产精品久一| 国产综合亚洲精品一区二| 亚洲精品乱码久久久久久蜜桃麻豆| 日本一区二区高清不卡| 天堂俺去俺来也www久久婷婷| 日韩精品诱惑一区?区三区| 日韩av中文字幕一区二区三区| 日韩免费福利视频| 国产精品最新| 亚洲一区二区三区在线免费| 日韩中文视频| 你懂的网址国产 欧美| 蜜桃视频一区二区三区| 伊人久久高清| 美女视频黄免费的久久| 一区二区三区国产在线| 在线日韩视频| 精品视频一区二区三区四区五区 | 在线手机中文字幕| 日本成人精品| 欧美日韩视频| 国产精品欧美一区二区三区不卡| 中文日韩欧美| 欧美精品日日操| 国产精品久av福利在线观看| 免费在线观看视频一区| 99久精品视频在线观看视频| 美腿丝袜在线亚洲一区| 亚洲精品欧美| 亚洲一区二区成人| 久久九九国产| а√天堂8资源中文在线| 国产日韩高清一区二区三区在线| 亚洲综合精品| 婷婷综合激情| 成人自拍av| 精品视频在线一区二区在线| 久久激五月天综合精品| 综合色一区二区| 国产精品视区| 亚洲欧美日韩高清在线| 久久久五月天| 欧美日韩精品免费观看视完整| 久久影院一区二区三区| 国产劲爆久久| 欧美成a人片免费观看久久五月天| 日韩av不卡在线观看| 日韩中文字幕| 日本中文字幕一区二区| 石原莉奈在线亚洲二区| 久久国产精品久久w女人spa| 欧美aa国产视频| 亚洲手机在线| 久久久久久久久久久妇女| 精品欧美一区二区三区在线观看| 97精品国产| 国产精品99视频| 高清不卡一区| 日韩中文在线电影| 国产亚洲一区二区手机在线观看 | 91精品美女| 欧美三区不卡| 国产精品一区高清| 国产视频一区二| 国产精品mv在线观看| 欧美国产另类| 精品日韩在线| 97精品97| 久久精品国产亚洲夜色av网站| 亚洲成人一区在线观看| 久久蜜桃精品| 国产99久久| 99re国产精品| 日韩中文字幕区一区有砖一区| 视频一区二区三区入口| 亚洲精品国产精品粉嫩| 亚洲精品九九| 国产精品网站在线看| 国产精品xvideos88| 国产一区二区三区日韩精品| 91欧美在线| 色爱综合av| 日韩欧美字幕| 亚洲大全视频| 美国三级日本三级久久99| 日本aⅴ免费视频一区二区三区| 国产精品一区2区3区| 福利在线一区| 欧美精品黄色| 日韩有码av| 麻豆国产精品777777在线| 日韩中文在线播放| 午夜在线一区| 日本成人在线视频网站| 麻豆成人91精品二区三区| 日韩国产一区二区三区| 亚洲激精日韩激精欧美精品| 日韩精品视频在线看| 麻豆国产91在线播放| 播放一区二区| 亚洲婷婷丁香| 久久精品一本| 亚洲精品99| 国产日韩中文在线中文字幕| 成人一二三区| 亚洲一区欧美激情| 日韩黄色免费网站| 精品午夜av| 国产一区清纯| 日韩不卡一二三区| 成人久久久久| 日本伊人久久| 日韩伦理福利| 一二三区精品| 狂野欧美性猛交xxxx| 欧美搞黄网站| 久久国际精品| 999久久久亚洲| 国产伦理一区| 激情婷婷亚洲| 欧美偷窥清纯综合图区| 久久久久久久久丰满| 日本91福利区| 亚洲www啪成人一区二区| 亚洲欧美在线专区| 日韩国产综合| 日韩av网站在线免费观看| 久久中文字幕av| 国产一区 二区| 午夜久久久久| 麻豆成人91精品二区三区| 亚洲一区不卡| 日本一二区不卡| 日韩中出av| 四虎4545www国产精品| 日韩av网站免费在线| 欧美二区视频| 国产一区二区三区日韩精品|