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

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

用Java實現斷點續傳(HTTP

瀏覽:213日期: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久久,三上悠亚国产精品一区二区三区
欧美精选一区二区三区| 欧美日韩国产观看视频| 日本精品在线中文字幕| 国产精品不卡| 伊人网在线播放| 欧美aa在线观看| 97se综合| 久久精品免费一区二区三区| 日本欧美在线看| 综合日韩在线| 精品国产乱码久久久| 国产精品麻豆成人av电影艾秋| 成人高清一区| 免费视频一区二区三区在线观看 | 国产美女久久| 亚洲精品日本| 精品一区91| 欧美日韩国产高清电影| 国产精品v日韩精品v欧美精品网站| 噜噜噜躁狠狠躁狠狠精品视频| 日韩激情一二三区| 国产精品白浆| 亚洲精品女人| 2023国产精品久久久精品双| 国产精品一区三区在线观看| 99精品在线观看| 美腿丝袜亚洲一区| 欧美色图一区| 在线免费观看亚洲| 国产99在线| 国产成人精品亚洲线观看| 国产精品久久观看| 亚洲aⅴ网站| 亚洲精品三级| 九九九精品视频| 国产日韩一区二区三区在线| 99久久激情| 在线 亚洲欧美在线综合一区| 日韩精品1区2区3区| 影音国产精品| 国产精品任我爽爆在线播放| 午夜久久免费观看| 亚洲欧美在线专区| 老司机精品久久| 国产欧美日韩免费观看| 亚洲国产成人二区| 偷拍欧美精品| 99精品在线| 激情自拍一区| 日韩一区欧美| 国产精品视频一区视频二区| 色乱码一区二区三区网站| 国产高清一区| 清纯唯美亚洲综合一区| av免费不卡国产观看| 国产精品免费看| 麻豆精品久久| 亚洲专区在线| 国产欧美日韩在线一区二区| 午夜av成人| 日韩精品五月天| 亚洲黄色免费av| 亚洲视频电影在线| 美女一区网站| 欧美亚洲综合视频| 亚洲国内欧美| 麻豆国产一区| 蜜臀va亚洲va欧美va天堂| 日本久久黄色| 日日摸夜夜添夜夜添国产精品| 国产理论在线| 国产亚洲欧美日韩在线观看一区二区| 欧美综合另类| 国产精品毛片aⅴ一区二区三区| 狠狠爱www人成狠狠爱综合网| 欧美黑人巨大videos精品| 伊人影院久久| 91亚洲一区| 国产美女撒尿一区二区| 亚洲一区亚洲| 午夜精品成人av| 美女视频免费精品| 色综合视频一区二区三区日韩 | 国产伦精品一区二区三区视频| 久久亚洲国产| 麻豆久久久久久| 日韩国产欧美三级| 黄色日韩在线| 天堂√8在线中文| 国产欧美日韩影院| 亚洲小说春色综合另类电影| 亚洲高清二区| 97精品国产一区二区三区| 亚洲精品少妇| 99视频一区| 精品亚洲美女网站| 精品精品国产三级a∨在线| 亚洲精品在线国产| 午夜在线观看免费一区| 国产在线观看www| 国产精品一区三区在线观看| 亚洲深深色噜噜狠狠爱网站| 久久在线电影| 欧美一区久久久| 精品一区二区三区亚洲| 久久精品 人人爱| 日本一区二区三区视频在线看| 国产午夜精品一区二区三区欧美| 国产成人精品亚洲日本在线观看| 久久精品国产网站| 国产精区一区二区| 国产日韩一区二区三免费高清 | 国产精品亚洲综合在线观看| 亚洲精品伊人| 日韩在线黄色| 日本一区福利在线| 婷婷精品在线| 91成人在线网站| 国产色噜噜噜91在线精品| 人人精品久久| 欧美在线黄色| 日韩有码av| 91国内精品| 国产午夜精品一区在线观看| 欧美日韩黄网站| 国产欧美日韩视频在线| 国产精品亚洲综合久久| 日韩va亚洲va欧美va久久| 日韩一区二区三免费高清在线观看 | 日韩和欧美的一区| 日韩有吗在线观看| 日韩不卡在线观看日韩不卡视频 | 国产一区二区久久久久| 国产精品亚洲欧美日韩一区在线| 欧美亚洲二区| 欧美国产亚洲精品| 国产精品久久久久久久久久妞妞| 日韩精品亚洲一区二区三区免费| 日本va欧美va精品发布| 欧美片网站免费| 久久精品网址| 成人午夜精品| 香蕉成人久久| 日韩一区二区三区在线看| 国产伦理一区| 亚洲永久av| 99热精品在线| 日韩精品免费一区二区夜夜嗨| 热久久久久久| 麻豆视频在线看| 欧美精品激情| 美女精品在线观看| 香蕉久久一区| 麻豆成人91精品二区三区| 国产夫妻在线| 在线精品视频在线观看高清| 一区二区三区四区日韩| 国产亚洲精品精品国产亚洲综合| 国产一区二区三区久久| 亚洲福利国产| 日本v片在线高清不卡在线观看| 国产精品成人国产| 国产麻豆久久| 视频一区免费在线观看| 国产精品调教视频| 伊人久久视频| 亚洲一区二区毛片| 国产欧美日韩一区二区三区在线| 国产色播av在线| 视频一区中文字幕国产| 欧美精品第一区| 亚洲激情不卡| 国产日韩在线观看视频| 欧美一级鲁丝片| 亚洲一区二区av| 久久精品国产免费| 亚洲国产一区二区三区在线播放| 亚洲精品日本| 久久三级毛片| 伊人精品在线| 久久中文字幕一区二区| 欧美理论视频| 里番精品3d一二三区| 午夜欧美在线| 久久不卡日韩美女| 91成人精品视频| 国产精品1区| 欧美在线资源| 久久亚洲资源中文字| 99视频一区| 精品国产18久久久久久二百| 欧美日韩国产免费观看视频| 欧美黄色一区| 黑丝一区二区三区| 老牛国内精品亚洲成av人片| 99在线精品视频在线观看| 久久女人天堂| 亚洲精品一级二级三级| 少妇久久久久| 免费日韩一区二区三区|