javaftp多線程
可以把文件打包上傳,再在線解壓
B. 2003搭建多線程FTP下載伺服器
ADSL是一種非對稱的DSL技術,所謂非對稱是指用戶線的上行速率與下行速率不同,上行速率低,下行速率高,ADSL 在一對銅線上支持上行速率512Kbps~1Mbps,下行速率1Mbps~8Mbps,有效傳輸距離在3~5公里范圍以內。
你要提高外網下載速度,只能更換成小區寬頻,而後使用動態域名的方式。
C. 用Java實現FTP伺服器解決方案
FTP 命令 FTP 的主要操作都是基於各種命令基礎之上的 常用的命令有 · 設置傳輸模式 它包括ASCⅡ(文本) 和BINARY 二進制模式;· 目錄操作 改變或顯示遠程計算機的當前目錄(cd dir/ls 命令);· 連接操作 open命令用於建立同遠程計算機的連接 close命令用於關閉連接;· 發送操作 put命令用於傳送文件到遠程計算機 mput 命令用於傳送多滾隱個文件到遠程計算機;· 獲取操作 get命令用於接收一個文件 mget命令用於接收多個文件 編程思路 根據FTP 的工作原理 在主函數中建立一個伺服器套接字埠 等待客戶端請求 一旦客戶端請求被接受 伺服器程序就建立一個伺服器分線程 處理客戶端的命令 如果客戶端需要和伺服器端進行文件的傳輸 則建立一個新的套接字連接來完成文件的操作 編程技巧說明 主函數設計在主函數中 完成伺服器埠的偵聽和服務線程的創建 我們利用一個靜態字元串變數initDir 來保存伺服器線程運行時所在的工作目錄 伺服器的初始工作目錄是由程序運行時用戶輸入的 預設為C盤的根目錄 具體的代碼如下 public class ftpServer extends Thread{private Socket socketClient;private int counter;private static String initDir;public static void main(String[] args){if(args length != ) {initDir = args[ ];}else{ initDir = c: ;}int i = ;try{System out println( ftp server started! );//監聽 號埠ServerSocket s = new ServerSocket( );for(;;){//接受客戶端請求Socket ining = s accept();//創建服務御尺線程new ftpServer(ining i) start();i++;}}catch(Exception e){}} 線程類的設計線程類的主要設計都是在run()方法中實現 用run()方法得到客戶端的套接字信息 根據套接字得到輸入流和輸出流 向客戶端發送歡迎信息 FTP 命令的處理( ) 訪問控制命令· user name(user) 和 password (pass) 命令處理代碼如下 if(str startsWith( USER )){user = str substring( );user = user trim();out println( Password );}if(str startsWith( PASS ))out println( User +user+ logged in );User 命令和 Password 命令分別用來提交客戶端用戶輸入的用戶名和口令 · CWD (CHANGE WORKING DIRECTORY) 命令處理代碼如下 if(str startsWith( CWD )){String str = str substring( );dir = dir+ / +str trim();out println( CWD mand succesful );}該命令改變工作目錄到用戶指定的目錄 · CDUP (CHANGE TO PARENT DIRECTORY) 命令處理代碼如下 if(str startsWith( CDUP )){int n = dir lastIndexOf( / );dir = dir substring( n);out println( CWD mand succesful );}該命令改變當前目錄為上一層目錄大拆廳 · QUIT命令處理代碼如下 if(str startsWith( QUIT )) {out println( GOOD BYE );done = true;}該命令退出及關閉與伺服器的連接 輸出GOOD BYE ( ) 傳輸參數命令· Port命令處理代碼如下 if(str startsWith( PORT )) {out println( PORT mand successful );int i = str length() ;int j = str lastIndexOf( );int k = str lastIndexOf( j );String str str ;str = ;str = ;for(int l=k+ ;lstr = str + str charAt(l);}for(int l=j+ ;l<=i;l++){str = str + str charAt(l);}tempPort = Integer parseInt(str ) * * +Integer parseInt(str );}使用該命令時 客戶端必須發送客戶端用於接收數據的 位IP 地址和 位 的TCP 埠號 這些信息以 位為一組 使用十進制傳輸 中間用逗號隔開 · TYPE命令處理代碼如下 if(str startsWith( TYPE )){out println( type set );}TYPE 命令用來完成類型設置 ( ) FTP 服務命令· RETR (RETEIEVE) 和 STORE (STORE)命令處理的代碼if(str startsWith( RETR )){out println( Binary data connection );str = str substring( );str = str trim();RandomAccessFile outFile = newRandomAccessFile(dir+ / +str r );Socket tempSocket = new Socket(host tempPort);OutputStream outSocket = tempSocket getOutputStream();byte byteBuffer[]= new byte[ ];int amount;try{while((amount = outFile read(byteBuffer)) != ){outSocket write(byteBuffer amount);}outSocket close();out println( transfer plete );outFile close();tempSocket close();}catch(IOException e){}}if(str startsWith( STOR )){out println( Binary data connection );str = str substring( );str = str trim();RandomAccessFile inFile = newRandomAccessFile(dir+ / +str rw );Socket tempSocket = new Socket(host tempPort);InputStream inSocket = tempSocket getInputStream();byte byteBuffer[] = new byte[ ];int amount;try{while((amount =inSocket read(byteBuffer) )!= ){inFile write(byteBuffer amount);}inSocket close();out println( transfer plete );inFile close();tempSocket close();}catch(IOException e){}}文件傳輸命令包括從伺服器中獲得文件RETR和向伺服器中發送文件STOR 這兩個命令的處理非常類似 處理RETR命令時 首先得到用戶要獲得的文件的名稱 根據名稱創建一個文件輸入流 然後和客戶端建立臨時套接字連接 並得到一個輸出流 隨後 將文件輸入流中的數據讀出並藉助於套接字輸出流發送到客戶端 傳輸完畢以後 關閉流和臨時套接字 STOR 命令的處理也是同樣的過程 只是方向正好相反 · DELE (DELETE)命令處理代碼如下 if(str startsWith( DELE )){str = str substring( );str = str trim();File file = new File(dir str);boolean del = file delete();out println( delete mand successful );}DELE 命令用於刪除伺服器上的指定文件 · LIST命令處理代碼如下 if(str startsWith( LIST )) {try{out println( ASCII data );Socket tempSocket = new Socket(host tempPort);PrintWriter out = new PrintWriter(tempSocket getOutputStream() true);File file = new File(dir);String[] dirStructure = new String[ ];dirStructure= file list();String strType= ;for(int i= ;iif( dirStructure[i] indexOf( ) == ) { strType = d ;}else{strType = ;}out println(strType+dirStructure[i]);}tempSocket close();out println( transfer plete );}catch(IOException e){}LIST 命令用於向客戶端返回伺服器中工作目錄下的目錄結構 包括文件和目錄的列表 處理這個命令時 先創建一個臨時的套接字向客戶端發送目錄信息 這個套接字的目的埠號預設為 然後為當前工作目錄創建File 對象 利用該對象的list()方法得到一個包含該目錄下所有文件和子目錄名稱的字元串數組 然後根據名稱中是否含有文件名中特有的 來區別目錄和文件 最後 將得到的名稱數組通過臨時套接字發送到客戶端 lishixin/Article/program/Java/JSP/201311/19211
D. Java什麼情況使用多線程
單線程程序的執行時一步一步的走,第一步完成了,才開始做第二步。舉個例子,我的一個程序的目的是查詢一張表的所有數據用java的窗體將數據展示出來,沒用多線程的話,我會先查數據,必須在查完之後,在渲染窗體,打開這個窗體界面。假如數據量大的話,我運行程序了幾分鍾都沒什麼反應。 這時我可以開一條線程去查詢數據,打開窗體,和查詢數據同時進行,這樣做的話增強利用率,節約時間。不用多線程的話,程序必定會先執行完一個步驟才會去執行下一步
如圖
E. ftp可否實現多線程上傳
沒有FTP軟體可以滿足你的要求。因為FTP協議里沒有給你多線程上傳的辦法。
F. C#多線程ftp下載的實現(java也可,關鍵是思路)
參考答案:讀書之法,在循序而漸進,熟讀而精思。——朱熹
G. java如何實現基於http和ftp多線程下載工具...
要訪問網路資源就要去了解你要訪問的網路資源所使用的協議。一般來說我們所使用的協議都是公開式的協議,比如http協議,它在數據的前面部分先設置一些信息來說明它所發送的數據的大小,文件類型等等。而多線程的實現原理就是先從http協議中獲取要下載的資源的資源大小,然後再分多個線程從不同的起點跟終點來分段下載資源。ftp資源的道理也是一樣。當然我並不是網路方面的專家,對網路我也不懂。以後只是我個人見解。
以下是給你找的一個java實現的http多線程下載。你看看吧
http://shazi.javaeye.com/blog/99132
H. JAVA的技術特點是什麼
JAVA的技術特點是什麼?
Java由美國SUN公司(被oracle公司收購)發明於1995年,是目前業界應用最廣泛、使用人數最多的語言,連續多年排名世界第一,可以稱之為「計算機語言界的英語」。
那麼Java這么高的評價它的特點有哪些,下面我來為題主解答:
一、跨平台/可移植性
這是Java的核心優勢。Java在設計時就很注重移植和跨平台性。比如:Java的int永遠都是32位。不像C++可能是16,32,可能是根據編譯器廠商規定的變化。這樣的話程序的移植就會非常麻煩。
Java首先利用文本編輯器編寫 Java源程序,源文件的後綴名為.java;再利用編譯器(javac)將源程序編譯成位元組碼文件,位元組碼文件的後綴名為.class; 最後利用虛擬機(解釋器,java)解釋執行。如下圖所示:
二、安全性
Java適合於網路/分布式環境,為了達到這個目標,在安全性方面投入了很大的精力,使Java可以很容易構建防病毒,防篡改的系統。比如Java取消了強大但又危險的指針。由於指針可進行移動運算,指針可隨便指向一個內存區域,而不管這個區域是否可用,這樣做是危險的。
三、面向對象
面向對象是一種程序設計技術,非常適合大型軟體的設計和開發。由於C++為了照顧大量C語言使用者而兼容了C,使得自身僅僅成為了帶類的C語言,多少影響了其面向對象的徹底性!Java則是完全的面向對象語言。
四、簡單性
Java就是C++語法的簡化版,我們也可以將Java稱之為「C++-」。跟我念「C加加減」,指的就是將C++的一些內容去掉;比如:頭文件,指針運算,結構,聯合,操作符重載,虛基類等等。同時,由於語法基於C語言,因此學習起來完全不費力。
五、高性能
Java最初發展階段,總是被人詬病「性能低」;客觀上,高級語言運行效率總是低於低級語言的,這個無法避免。Java語言本身發展中通過虛擬機的優化提升了幾十倍運行效率。比如,通過JIT(JUST IN TIME)即時編譯技術提高運行效率。 將一些「熱點」位元組碼編譯成本地機器碼,並將結果緩存起來,在需要的時候重新調用。這樣的話,使Java程序的執行效率大大提高,某些代碼甚至接近C++的效率。
因此,Java低性能的短腿,已經被完全解決了。業界發展上,我們也看到很多C++應用轉到Java開發,很多C++程序員轉型為Java程序員。
六、分布式
Java是為Internet的分布式環境設計的,因為它能夠處理TCP/IP協議。事實上,通過URL訪問一個網路資源和訪問本地文件是一樣簡單的。Java還支持遠程方法調用(RMI,Remote Method Invocation),使程序能夠通過網路調用方法。
七、多線程
多線程的使用可以帶來更好的交互響應和實時行為。 Java多線程的簡單性是Java成為主流伺服器端開發語言的主要原因之一。
八、健壯性
Java是一種健壯的語言,吸收了C/C++ 語言的優點,但去掉了其影響程序健壯性的部分(如:指針、內存的申請與釋放等)。Java程序不可能造成計算機崩潰。即使Java程序也可能有錯誤。如果出現某種出乎意料之事,程序也不會崩潰,而是把該異常拋出,再通過異常處理機制加以處理。
以上幾種特性你了解到啦嗎? 記得給個贊!
當然這些還沒完,Java除啦這些特性還有一些其他的特點我也來給你講一講!!
1.java的風格類似C++,從某種意義上講,java是C++的一個變種。但是java摒棄了C、C++中的容易引發錯誤和難以理解的指針,結構,以及內存管理等;
2.java是一種強類型的語言,比C/C++檢查還要嚴格,java區分大小寫字母;
3.java禁止非法訪問內存,因為java沒有指針,內存的申請和釋放;
4.對於不同的操作系統,會有不同的java虛擬機,這也就決定了java的可移植性;
5.java提供了自動垃圾回收機制gc,有效避免了C、C++的內存泄漏問題;
記得給個贊!
I. java中用多線程可以提高 ftp批量上傳的速度嗎
在帶寬足夠的情況,多線程各上傳同的文件,是可以的。。。。。。。