1. 用java編寫ftp客戶端這樣的網路程序需用到Java的什麼知識
會socket編程就可以了
我給你個測試:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import sun.net.ftp.*;
//FTP連接與瀏覽
public class FtpClientDemo extends JFrame{
JTextField jtfServer; //輸入Ftp伺服器地址
JTextField jtfUser; //輸入用戶名
JPasswordField jtfPass; //輸入密碼
JButton jbConnect; //連接按鈕
JButton jbDisconnect; //斷開按鈕
JTextArea jtaShowFiles; //顯示伺服器目錄與文件
FtpClient ftpClient;
public FtpClientDemo(){
super("FTP連接與瀏覽"); //調用父類構造函數
jtfServer=new JTextField(13); //實例化組件
jtfUser=new JTextField(8);
jtfPass=new JPasswordField(8);
jbConnect=new JButton("連接");
jbDisconnect=new JButton("斷開");
jtaShowFiles=new JTextArea();
Container container=getContentPane(); //得到容器
JPanel panel=new JPanel(); //實例化面板
panel.add(new JLabel("地址")); //增加組件到面板上
panel.add(jtfServer);
panel.add(new JLabel("用戶名"));
panel.add(jtfUser);
panel.add(new JLabel("密碼"));
panel.add(jtfPass);
container.add(panel,BorderLayout.NORTH); //增加組件到容器上
JScrollPane jsp=new JScrollPane(jtaShowFiles);
container.add(jsp,BorderLayout.CENTER);
panel=new JPanel();
panel.add(jbConnect);
panel.add(jbDisconnect);
container.add(panel,BorderLayout.SOUTH);
jbConnect.addActionListener(new ActionListener(){ //連接按鈕事件處理
public void actionPerformed(ActionEvent ent){
connectServer(); //調用連接到伺服器的方法
}
});
jbDisconnect.addActionListener(new ActionListener(){ //斷開按鈕事件處理
public void actionPerformed(ActionEvent ent){
disconnectServer(); //調用斷開與伺服器連接的方法
}
});
setSize(460,260); //設置窗口尺寸
setVisible(true); //設置窗口可視
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //關閉窗口時退出程序
}
public void connectServer(){
try{
ftpClient = new FtpClient(); //實例化FtpClient對象
String serverAddr=jtfServer.getText(); //得到伺服器地址
String user=jtfUser.getText(); //得到用戶名
String pass=jtfPass.getPassword().toString(); //得到密碼
ftpClient.openServer(serverAddr); //連接到伺服器
ftpClient.login(user,pass); //在伺服器上注冊
InputStream is=ftpClient.list(); //得到伺服器目錄與文件列表輸入流
StringBuffer info=new StringBuffer(); //實例化StringBuffer對象,用於輸出信息
int ch;
while ((ch=is.read())>=0){ //未讀完列表,則繼續
info.append((char)ch); //增加信息
}
jtaShowFiles.setText(new String(info)); //顯示信息
is.close(); //關閉輸入流
}
catch (IOException ex){
JOptionPane.showMessageDialog(FtpClientDemo.this,ex.getMessage()); //顯示提示信息
ex.printStackTrace(); //在命令行窗口輸出出錯信息
}
}
public void disconnectServer(){
try{
ftpClient.closeServer(); //關閉與伺服器的連接
}
catch (IOException ex){
ex.printStackTrace();
}
}
public static void main(String[] args){
new FtpClientDemo();
}
}
2. 如何用java實現ftp客戶端程序
FTP 的主要操作都是基於各種命令基礎之上的。常用的命令有: · 設置傳輸模式,它包括ASCⅡ(文本) 和BINARY 二進制模式; · 目錄操作,改變或顯示遠程計算機的當前目錄(cd、dir/ls 命令); · 連接操作,open命令用於建立同遠程計算機的連接;close命令用於關閉連接; · 發送操作,put命令用於傳送文件到遠程計算機;mput 命令用於傳送多個文件到遠程計算機; · 獲取操作,get命令用於接收一個文件;mget命令用於接收多個文件。 編程思路 根據FTP 的工作原理,在主函數中建立一個伺服器套接字埠,等待客戶端請求,一旦客戶端請求被接受,伺服器程序就建立一個伺服器分線程,處理客戶端的命令。如果客戶端需要和伺服器端進行文件的傳輸,則建立一個新的套接字連接來完成文件的操作。 編程技巧說明 http://www.jacken.com.cn/Programming/Java/2008-10-24/Java-.html
3. 如何用Java實現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 != 0) {
initDir = args[0];
}else{ initDir = "c:";}
int i = 1;
try{
System.out.println("ftp server started!");
//監聽21號埠
ServerSocket s = new ServerSocket(21);
for(;;){
//接受客戶端請求
Socket incoming = s.accept();
//創建服務線程
new ftpServer(incoming,i).start();
i++;
}
}catch(Exception e){}
}
4. Java的ftp操作方法有哪幾種
FTP(File Transfer Protocol)是 Internet 上用來傳送文件的協議(文件傳輸協議)。它是為了我們能夠在 Internet 上互相傳送文件而制定的的文件傳送標准,規定了 Internet 上文件如何傳送。也就是說,通過 FTP 協議,我們就可以跟 Internet 上的 FTP 伺服器進行文件的上傳(Upload)或下載(Download)等動作。
和其他 Internet 應用一樣,FTP 也是依賴於客戶程序/伺服器關系的概念。在 Internet 上有一些網站,它們依照 FTP 協議提供服務,讓網友們進行文件的存取,這些網站就是 FTP 伺服器。網上的用戶要連上 FTP 伺服器,就要用到 FPT 的客戶端軟體,通常 Windows 都有「ftp」命令,這實際就是一個命令行的 FTP 客戶程序,另外常用的 FTP 客戶程序還有 CuteFTP、Ws_FTP、FTP Explorer等。
要連上 FTP 伺服器(即「登陸」),必須要有該 FTP 伺服器的帳號。如果是該伺服器主機的注冊客戶,你將會有一個 FTP 登陸帳號和密碼,就憑這個帳號密碼連上該伺服器。但 Internet 上有很大一部分 FTP 伺服器被稱為「匿名」(Anonymous)FTP 伺服器。這類伺服器的目的是向公眾提供文件拷貝服務,因此,不要求用戶事先在該伺服器進行登記注冊。
Anonymous(匿名文件傳輸)能夠使用戶與遠程主機建立連接並以匿名身份從遠程主機上拷貝文件,而不必是該遠程主機的注冊用戶。用戶使用特殊的用戶名「anonymous」和「guest」就可有限制地訪問遠程主機上公開的文件。現在許多系統要求用戶將Emai1地址作為口令,以便更好地對訪問進行跟綜。出於安全的目的,大部分匿名FTP主機一般只允許遠程用戶下載(download)文件,而不允許上載(upload)文件。也就是說,用戶只能從匿名FTP主機拷貝需要的文件而不能把文件拷貝到匿名FTP主機。另外,匿名FTP主機還採用了其他一些保護措施以保護自己的文件不至於被用戶修改和刪除,並防止計算機病毒的侵入。在具有圖形用戶界面的 WorldWild Web環境於1995年開始普及以前,匿名FTP一直是Internet上獲取信息資源的最主要方式,在Internet成千上萬的匿名PTP主機中存儲著無以計數的文件,這些文件包含了各種各樣的信息,數據和軟體。 人們只要知道特定信息資源的主機地址, 就可以用匿名FTP登錄獲取所需的信息資料。雖然目前使用WWW環境已取代匿名FTP成為最主要的信息查詢方式,但是匿名FTP仍是 Internet上傳輸分發軟體的一種基本方法
5. Java怎麼均衡訪問多台ftp伺服器
多次需要把文件上傳到單獨的伺服器,而程序是在單獨的伺服器上部署的,在進行文件操作的時候就需要跨伺服器進行操作包括:文件上傳、文件下載、文件刪除等。跨伺服器文件操作一般是需要FTP協議和SFTP協議兩種,現在就通過Java實現FTP協議的文件上傳。要實現FTP操作文件需要引入jar包: commons-net-1.4.1.jar
參考資料來源:網路貼吧
6. java編寫FTP伺服器軟體(非客戶端)實現一FTP伺服器,能列出/更改目錄,上下傳文件,顯示文件列表,支持NO
您找的是GFTPServer,到YufengSoftwareStudio上去下載。或在網路上查找「GFTPServer」。全Java實現的FTP伺服器,在JRE/JDK1.6環境下直接運行,傻瓜式GUI操作,非常簡便。
7. java中用多線程可以提高 ftp批量上傳的速度嗎
可以把文件打包上傳,再在線解壓
8. 可否幫我寫個用java編寫的ftp伺服器呢謝謝啦~~
Java是一種簡單的,跨平台的,面向對象的,分布式的,解釋的,健壯的安全的,結構的中立的,可移植的,性能很優異的多線程的,動態的語言。當1995年SUN推出Java語言之後,全世界的目光都被這個神奇的語言所吸引。那麼Java到底有何神奇之處呢?
Java語言其實最早是誕生於1991年,起初被稱為OAK語言,是SUN公司為一些消費性電子產品而設計的一個通用環境。他們最初的目的只是為了開發一種獨立於平台的軟體技術,而且在網路出現之前,OAK可以說是默默無聞,甚至差點夭折。但是,網路的出現改變了OAK的命運。
在Java出現以前,Internet上的信息內容都是一些乏味死板的HTML文檔。這對於那些迷戀於WEB瀏覽的人們來說簡直不可容忍。他們迫切希望能在WEB中看到一些互動式的內容,開發人員也極希望能夠在WEB上創建一類無需考慮軟硬體平台就可以執行的應用程序,當然這些程序還要有極大的安全保障。對於用戶的這種要求,傳統的編程語言顯得無能為力,面SUN的工程師敏銳地察覺到了這一點,從1994年起,他們開始將OAK技術應用於WEB上,並且開發出了HotJava的第一個版本。當SUN公司1995年正式以Java這個名字推出的時候,幾乎所有的WEB開發人員都想到:噢,這正是我想要的。於是Java成了一顆耀眼的明星,丑小鴨一下了變成了白天鵝。
Java的開發環境有不同的版本,如sun公司的Java Development Kit, 簡稱JDK。後來微軟公司推出了支持Java規范的Microsoft Visual J++ Java開發環境,簡稱 VJ++。
[編輯本段]Java名稱的由來
說起Java這個名稱是怎麼來的,在世界上還流傳著不同版本的傳說。
1.咖啡說
1995年,SUN公司和好萊塢准備開展一個技術交流會,皆以宣傳公司的產品。James Gosling帶著他的系統來到了技術交流會。但他不能用OAK這個名字了。OAK已經被一家半導體公司注冊了,並且注冊了好多領域,只能換名。James Gosling四處觀望尋找靈感,他看到了一個泡咖啡的杯子,杯子上印著Java,James Gosling就把這種語言改名為Java。
2.度假說
1994年6、7月間,在經歷了一場歷時三天的頭腦風暴的討論後,Green團隊決定再一次改變了努力的目標,這次他們決定將該技術應用於萬維網。他們認為隨著Mosaic瀏覽器的到來,網際網路正在向同樣的高度互動的遠景演變,而這一遠景正是他們在有線電視網中看到的。此時Green小組組員正在在印度尼西亞爪哇島(Java)度假時,於是他們把Oak改名為Java。
3.簡寫說
Java命名來源於開發人員名字的組合:James Gosling、Arthur Van Hoff和Andy Bechtolsheim首字母的縮寫。
4.頭腦風暴說
關於Java命名的由來,James Gosling是曾經這樣回答過Jonathan Schwartz,原文如下:
From: James Gosling
Date: August 24, 2007 8:16:58 PM PDT
To: Jonathan Schwartz
Subject: How was Java named?
The story goes like this:
We needed a name. We had been using "oak" (which was selected essentially randomly by me), and while the team had grown attached to it, the trademark lawyers ruled it out. We had lots of email debates about names, but nothing got resolved. We ended up in the awkward position where the #1 thing stopping us from shipping was the name.
Our marketing lead knew someone who was a "naming consultant" (I don't remember his name, but he was great). We could neither afford the price nor the time of a conventional proct naming process. He agreed to do something rather odd, but effective and quick: he acted as a facilitator at a meeting where about a dozen of us locked ourselves in a room for an afternoon. He started asking us questions like "How does this thing make you feel?" (Excited!) "What else makes you feel that way?" (Java!) We ended up with a board covered with essentially random words. Then he put us through a sorting process where we ended up with a ranking of the names. We ended up with a dozen name candidates and sent them off to the lawyers: they worked down the list until they hit one that cleared their search. "Java" was the fourth name on the list. The first name on the list was "Silk", which I hated but everyone else liked. My favorite was "Lyric", the third one on the list, but it didn't pass the lawyers test. I don't remember what the other candidate names where.
So, who named Java? Marketing organized the meeting, the consultant ran it, and a whole pile of us did a lot of yelling out of random words. I'm honestly not real sure who said "Java" first, but I'm pretty sure it was Mark Opperman.
There certainly wasn't any brilliant marketing mind who went through a coherent thought process.
中文翻譯如下:
我們需要一個名字。我們已經使用了oak(那是我隨機挑選的),然而當開發團隊接觸它的時候,這個商標已經被律師排除了。我們收到許多關於命名爭論的電子郵件,但是問題沒有解決。我們需要結束這種棘手的處境,阻撓我們前進的首要問題就是這命名。
我們市場部領導了解到某人是「命名顧問」(我不記得他的名字了,但是他是很棒)。我們既不可能提供金錢也不可能提供時間用於常規產品的命名過程。他同意做個臨時的事,但是要高效和快捷:一天下午,我們大概十二個人將自己鎖在一個房間內,他在會上充當一個主持人。他讓我們寫一些名稱來做一個挑選。我們最終寫了十二個候選名稱,並且將其送達給律師團審閱。律師團看了列表,選定了能排出其它名稱的候選項。「Java」是列表裡的第四個名稱。列表裡的第一個名稱是「Silk」,那是我討厭但是其他人喜歡的名稱。我最喜歡的是列表裡的第三個名稱「Lyric」,但是它沒有通過律師團的審核。我不記得其它候選名稱了。
為什麼命名Java呢?市場部組織了一個會議,顧問提名,我們全體人員喊出隨機的詞語。說實話,我真的不確定誰最先說「Java」,但是我有很有把握說這人是Mark Opperman。
確實不存在任何傑出的市場理念能夠通過一致的認可。
[編輯本段]Java的特點
1.平台無關性
平台無關性是指Java能運行於不同的平台。Java引進虛擬機 原理,並運行於虛擬機,實現不同平台的Java介面之間。使用Java編寫的程序能在世界范圍內共享。Java的數據類型與 機器無關,Java虛擬機(Java Virtual Machine)是建立在硬體和操作系統之上,實現Java二進制代碼的解釋執行功能, 提供於不同平台的介面的。
2.安全性
Java的編程類似C++,學習過C++的讀者將很快掌握Java的精髓。Java舍棄了C++的指針對存儲器地址的直接操作,程序運行時,內存由操作系統分配,這樣可以避免病毒通過指針侵入系統。Java對程序提供了安全管理器,防止程序的非法訪問。
3.面向對象
Java吸取了C++面向對象的概念,將數據封裝於類中,利用類的優點,實現了程序的簡潔性和便於維護性。類的封裝性、繼承性等有關對象的特性,使程序代碼只需一次編譯,然後通過上述特性反復利用。程序員只需把主要精力用在類和介面的設計和應用上。Java提供了眾多的一般對象的類,通過繼承即可使用父類的方法。在Java中,類的繼承關系是單一的非多重的,一個子類只有一個父類,子類的父類又有一個父類。Java提供的Object類及其子類的繼承關系如同一棵倒立的樹形,根類為Object類,Object類功能強大,經常會使用到它及其它派生的子類。
4.分布式
Java建立在擴展TCP/IP網路平台上。庫函數提供了用HTTP和FTP協議傳送和接受信息的方法。這使得程序員使用網路上的文件和使用本機文件一樣容易。
5.健壯性
Java致力於檢查程序在編譯和運行時的錯誤。類型檢查幫助檢查出許多開發早期出現的錯誤。Java自己操縱內存減少了內存出錯的可能性。Java還實現了真數組,避免了覆蓋數據的可能,這些功能特徵大大提高了開發Java應用程序的周期。並且Java還提供了Null指針檢測、數組邊界檢測、異常出口、Byte code校驗等功能。
[編輯本段]Java與C/C++語言
Java提供了一個功能強大語言的所有功能,但幾乎沒有一點含混特徵。C++安全性不好,但C和C++被大家接受,所以Java設計成C++形式,讓大家很容易學習。Java去掉了C++語言中的指針運算、結構、typedefs、#define、需要釋放內存等功能,減少了平常出錯的50%,讓Java的語言功能很精煉。而且,因為Java很小,所以整個解釋器只需215K的RAM,並增加了一些很有用的功能,如自動收集碎片。Java實現了C++的基本面象對象技術並有一些增強,(為了語言簡單,刪除了一些功能)。Java處理數據方式和用對象介面處理對象數據方式一樣。
Java與C和C++直接相關.Java繼承了C的語法,Java 的對象模型是從C++改編而來的.現代程序設計始於C,而後過渡到C++,現在則是JAVA.通過大量的繼承,JAVA提供了一個強大的,可以更好地利用已有成果的,邏輯一致的程序設計環境,並且增加了在線環境需求的新功能.或許最重要的一點在於,由於它們的相似性,C,C++和JAVA為專業程序員定義了一個統一的概念架構.程序員從其中的一種語言轉到另一種語言時,不會遇到太大的困難.
[編輯本段]Java與Internet
我們知道,早先的www僅可以傳送文本和圖片,Java的出現實現了互動的頁面,是一次偉大的革命。Java並不是為Internet、www而設計的,它也可以用來編寫獨立的應用程序。Java是一種面向對象語言,Java語言類似於C++語言,所以已熟練掌握C++語言的編程人員,再學習Java語言就容易得多!Java程序需要編譯,它被放置在Internet伺服器上,當用戶訪問伺服器時,Java程序被下載到本地的用戶機上,由瀏覽器解釋運行。實際上有兩種Java程序:一種Java應用程序是一個完整的程序,如Web瀏覽器。另一種Java小應用程序是運行於Web瀏覽器中的一個程序。Java程序和它的瀏覽器HotJava,提供了可讓你的瀏覽器運行程序的方法。你能從你的瀏覽器里直接播放聲音,你還能播放頁面里的動畫,Java還能告訴你的瀏覽器怎樣處理新的類型文件。當我們能在2400 baud線上傳輸視頻圖象時,HotJava將能顯示這些視頻。
[編輯本段]Java與電子商務
電子商務是當今的熱門話題,然而傳統的編程語言難以勝任電子商務系統,電子商務要求程序代碼具有基本的要求:安全、可靠、同時要求能與運行於不同平台的機器的全世界客戶開展業務。Java以其強安全性、平台無關性、硬體結構無關性、語言簡潔同時面向對象,在網路編程語言中占據無可比擬的優勢,成為實現電子商務系統的首選語言。
9. 怎樣學習java
我可以結合自己的經驗大致給你說一說,希望對你有所幫助,少走些彎路。
學習java其實應該上升到如何學習程序設計這種境界,其實學習程序設計又是接受一種編
程思想。每一種語言的程序設計思想大同小異,只是一些由語言特性的而帶來的細微差別
,比如Java中的Interface,你幾乎在以前的學習中沒有碰到過。以下我仔細給你說幾點
1。我們必須明確一個大方向,也就是說現在面向對象的編程范疇。盡管人工智慧曾經有
所浪潮(看看Borland為什麼有TurboPRolog),但未來5-10年工業界廣泛承認並接受的
將是面向對象式的編程。
2。工業界目前最流行的面向對象編程語言就是C++和Java。所以基本上鎖定這兩個方向就
可以了。而且完全可以同時把握。
3。把握Java的精華特性而且一定要知道為什麼。比如,Interface和multi-thread。用
interface是更好的多繼續的模型,而多線程則是設計到語言一級的重要特性。要完全理
解interface是為什麼,用多線程又有幾種常用的編程模型。
4。理解了語言的特性是為什麼了之後,就可以試著上升到設計這個層次,究竟學習語言
是要用的。目前比較好的開發模式是採用自定向下的面向對象的設計,加上MVC的模式(
你可以看一下我介紹的關於MVC的內容)。首先要找出最頂層的對象(這往往是最難的)
,然後一層一層往下遞歸
,記住每次應符合7+/-2的原則,因為我們人的短記憶就是這樣。一般有圖形用戶界面的
應從界面開始設計。
5。有了基本設計模型後,可以學一些設計模式(Design Pattern)。這是目前證實很有效
的。比如體系結構模式(Layering分層,Pipe/Filter管道或過濾器),設計模式(有很
多,比如對象池Object
Pool、緩沖池Cache等),編程模式(比如Copy-on-Write)。懂了這些模式之後,就會對
系統的整體結構有很好的把握,而學術上也有傾向一個系統完全可以由各種模式組合而成
。前面提到的MT實際上就有好幾種模式,把握後就不用自己花很多時間去試了。另外一個
很重要的領域就是並行
和分布式計算領域,大概有20種左右。
6。接下來就不能紙上談兵了,最好的方法其實是實踐。一般教科書上的例子並不能算是
實踐,只能算是讓你把握語言特性用的。而提倡做實際的Project也不是太好,因為你還
沒有熟練的能力去綜合各種技術,這樣只能是你自己越來越迷糊。我認為比較好的方法是
找一些比較經典的例子,
每個例子比較集中一種編程思想而設計的
7。結合前面學到的設計模式你就可以很好的理解這些經典的例子。並且自己可以用他來 實現一些簡單的系統。假如可以對他進行進一步的修改,找出你覺得可以提高性能的地方 加上自己的設計,那就更上一個層次了,也就會真正地感到有所收獲。
8。好象以上談的跟Java沒什麼關系,其實我們早就應該從單純的學習語言到真正的學習 好編程的領域。學習技術是沒有止境的,你學習第一種語言可能要半年時間,以後每種語言都不應該超過兩個月,否則你會覺得學習語言是包袱,是痛苦我們的學習,我們的學習最重要的是實戰軟體的開發,所以建議在剛剛開始學習的時候,多找一些項目來研究,很多學校都有免費的課程,一般都會有提供小項目實戰的,如果你們沒有找不到,可以加我建立的一個交流群先加上670另外還有025最後加上447 這樣你就可以找到組織,在群里大家都會提供很多小項目幫助大家成長的,你不來我們沒有損失,損失的是你。
9。學習是為了用的,是為了讓你的程序產生價值典
10. java FTP上傳 , 伺服器卡死
卡死?趕緊換一台配置更好的伺服器吧。。。。做為一個伺服器商的建議