日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

“网络蚂蚁”的Java实现

發布時間:2023/12/10 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 “网络蚂蚁”的Java实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
“網絡螞蟻”的Java實現
owen1944 原創? (參與分:208,專家分:760)?? 發表:2002-9-20 下午9:35 ??版本:1.0 ??閱讀:5485次

“網絡螞蟻”、Falshget 等許多多線程下載軟件都是網友的必備工具,利用這些工具可以快速從服務器上下載比較大的文件,這些工具的工作特性是把服務器端的文件分成幾個段,每個段分別、同時進行下載。編寫這類程序,第一、必須對HTTP協議有較為充分的了解;第二、有效使用多線程編程手段在軟件上實現。

HTTP 協議的簡介

HTTP協議是一種超文本傳輸協議(Hypertext Transfer Protocol),工作于網絡應用層,自1990年起廣泛應用于WWW 的全球信息服務,HTTP協議的詳細說明可以在網上查閱RFC2518、RFC2616等文檔。

HTTP 協議老的標準是HTTP/1.0,目前最通用的標準是HTTP/1.1。HTTP/1.1是在HTTP/1.0基礎上的升級,增加了一些功能,全面兼容HTTP/1.0。HTTP/1.0不支持文件斷點續傳,如果服務器使用HTTP/1.0,“網絡螞蟻”的任何多線程下載程序都只能按單線程下載;好在目前的Web服務器絕大多數都采用了HTTP/1.1,所以,下面將基于HTTP/1.1進行介紹。

HTTP協議的相關重要命令

基于HTTP的瀏覽器瀏覽網頁、下載文件時,工作原理類似客戶機/服務器模式:瀏覽器向Web服務器發出一個HTTP請求行;Web服務器在收到有效的請求后,返回一個狀態行或多個響應標題、一個空白行和相關文檔。根據這一工作原理,下載程序必須實現向服務器發送請求和獲取服務器響應狀態的功能。

1.向服務器發送 GET請求命令

一個HTTP請求由一個請求行、可選數目的請求標題、一個空白行,以及在POST情況下的一些額外的數據組成。請求行的格式是:

請求方法 URI  HTTP/版本號

GET 命令是瀏覽器常用的文檔請求方法,在程序中間使用

GET URI  HTTP/1.1

向Web服務器發送請求行(行號3),Java 代碼如下:

....

clientSocket = new Socket(host, port);//打開要下載文件服務器的Socket

outStream = new PrintStream(clientSocket.getOutputStream());

....

outStream.println(“GET”+uri+“ HTTP/1.1”);

outStream.println(“Host:”+host);

outStream.println(“Accept:*/* ”);

outStream.println(“Referer:”);

outStream.println();

....

注:第4行給出URL中的主機名和端口號,

第5行說明客戶端接收所有MIME類型,

第7行方送一個空白行,表明請求行結束。

2.獲取服務器響應狀態

在發送HTTP請求行以后,程序就可以讀取服務器的響應狀態了。HTTP響應狀態行包括:HTTP 狀態碼和一些HTTP響應標題。

1) HTTP狀態碼

HTTP狀態碼格式是 HTTP/版本信息的數字表示。狀態碼例子如下:

HTTP/1.0 200 OK // 表示服務器支持HTTP/1.0 協議,成功

HTTP/1.1 200 OK // 表示服務器支持HTTP/1.1 協議,成功

HTTP/1.0 404 Not Found // 表示服務器支持HTTP/1.0 協議,訪問文件沒有找到

在程序中間,如果讀到“HTTP/1.1 200 OK”這樣的字符串,表明欲下載文件存在、該服務器支持斷點續傳,可以使用多線程下載。如果讀到“HTTP/1.0 200 OK”這樣的字符串,表明欲下載文件存在、但該服務器不支持斷點續傳,只可以使用單線程下載。

.....

while ((line=inStream.readLine()) != null) //將服務器響應狀態讀到line

........

if(line.substring(0,7).equals(“HTTP/1.”) ) //判斷是否支持HTTP/1.1

{ if(line.charAt(7)==‘0’)

{

System.out.println(“server use http/1.0”);

threadcount=1;

}

if(!(line.substring(9,12)).equals(“200”)) //判斷請求是否成功

{ System.out.println(“ERROR:”+line);

return false;

}

}

2) 讀取重要的響應標題,獲得要下載文檔的文件長度

如果HTTP狀態碼表明訪問成功,服務器會回送一些標題行,我們最關注的是Content-Length 這一行,比如,如果服務器回送“Content-Length:1000”,表明請求文件的長度是1000字節,所以讀取這一行信息,可以得到文件的長度信息:

....

if(line.substring(0,15).equals(“Content-Length:”) )

{ filelength=Long.parseLong(line.substring(15).trim());

System.out.println(“file length:” +filelength);

}

......

向服務器發送斷點續傳請求

如上所述,如果服務器支持HTTP/1.1,再次向服務器發送GET請求:

.....

outStream.println(“GET ”+uri+“HTTP/1.1 ”);

outStream.println(“Host:”+host);

outStream.println(“Accept:*/* ”);

outStream.println(“RANGE:bytes=”+(fileblocklength)*thisthreadid+“-”);

outStream.println();

.....

第4行是關鍵,“RANGE:bytes=”是HTTP/1.1新增內容,HTTP/1.0每次傳送文件都是從文件頭開始,即0字節處開始,“RANGE:bytes=XXXX”表示要求服務器從文件XXXX字節處開始傳送,這就是我們平時所說的斷點續傳!

分割文件,多線程下載

使用多線程編程技術,同時啟動多個線程,根據線程個數,計算文件分割位置,向服務器發送幾個不同的下載斷點,同時接受數據并寫入文件,就可以實現多線程下載了。

.....

raf=new RandomAccessFile(file,“rw”);//以隨機存取方式打開文件

.....

synchronized(raf) //按同步方式把各個線程得到數據分別寫入文件

{ raf.seek(thisthreadid*(filelength/threadcount)+k*buflength);

raf.write(readbytes);

......

}

......


總結

以上是生活随笔為你收集整理的“网络蚂蚁”的Java实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 高潮无码精品色欲av午夜福利 | 太久av| 人妻少妇精品视频一区二区三区 | 奇米影视首页 | 婷婷综合亚洲 | 在线免费观看a视频 | 日本阿v视频 | 无码人妻精品丰满熟人区 | 国产美女免费视频 | 黄色大全在线观看 | 无遮挡av | 精品人妻一区二区三区视频 | 成人av网站在线 | 午夜国产视频 | av网站导航 | 日韩有码在线观看 | 中日韩精品一区二区三区 | 亚洲资源站 | 国产精品无码人妻一区二区在线 | 国产精品igao视频 | 啪啪在线观看 | 亚洲第五页 | 男女野外做受全过程 | 国产伦精品一区二区三区 | 一区二区三区四区av | 日本激情在线 | 亚洲av日韩精品久久久久久久 | 欧美日韩视频在线播放 | 小视频免费在线观看 | 色玖玖| 日韩午夜在线 | 午夜性片 | 四虎免费久久 | 娇小萝被两个黑人用半米长 | 国产在线拍 | 欧美午夜精品理论片a级按摩 | 自拍偷拍一区二区三区 | 亚洲成人免费网站 | 国产专区在线播放 | 天堂在线中文资源 | 国产3p精品一区 | 欧美视频免费在线 | av一二三四区| 日韩中文一区二区 | 亚洲精品无码不卡在线播he | 在线日韩视频 | 亚洲女人毛片 | 久久一区二区三区视频 | 成人免费大片黄在线播放 | 日本一区二区三区在线观看 | 天堂在线日本 | www.youjizz.com久久| 麻豆精品国产传媒mv男同 | 亚洲一区二区视频在线 | 亚洲日本精品视频 | 成人激情五月天 | 欧美三日本三级少妇三99 | 国产精品国产三级国产aⅴ中文 | 狠狠躁天天躁夜夜躁婷婷 | 双性娇喘浑圆奶水h男男漫画 | 成人午夜黄色 | 欧美日韩在线一区二区三区 | 欧洲色av| 国产精品视频免费在线观看 | 久久精品无码Av中文字幕 | 久久久免费看 | 国产又粗又长又大 | 波多野在线观看 | 国产在线成人精品午夜 | 欧美大片91| 日韩一级免费视频 | 熟妇人妻精品一区二区三区视频 | 超碰免费人人 | 97avcc| 韩国黄色一级片 | 日本一区二区三区在线免费观看 | 最新理伦片eeuss影院 | 打白嫩屁屁网站视频短裙 | 亚洲精品视频91 | 午夜草逼 | 成人深夜免费视频 | 爱爱激情网 | 麻豆影视在线观看 | 免费黄色av电影 | 蜜桃av一区 | 中文字幕岛国 | 欧美精品做受xxx性少妇 | 国产日日操| 欧美午夜性春猛交 | 日本一二三区不卡 | 靠逼视频免费网站 | 亚洲吧 | 91精品国产综合久久久久久 | 8050午夜二级 | 免费av大片 | 在线精品亚洲欧美日韩国产 | 日本韩国免费观看 | 99久久久精品 | 免费看国产片在线观看 |