1、用java做出一個FTP 伺服器(!客戶端)軟體,具體都要干什麼;
SOCKET網路編程,這個是基本的。
還有FTP協議要看,文件的讀取與下載。
2、如何測試java開發ftp伺服器
http的話就用httpclient。open後,可以返回一個InputStream。這個就是你要讀到文件流。原理的話,參考你版用瀏覽器打開這權個鏈接顯示的內容。這個返回的是一個HTML網頁,需要你解析出裡面的文字(一般來說取body中間的內容就行)其實對於這種文件一般用FTP來下載的。樓上寫的那個不對,哈哈。需要的話自己最好去查一下,怎麼用,我有代碼,不過告訴你的話也不太好?URLurl=newURL("http://你的地址");URLConnectionconnection=url.openConnection();InputStreamis=connection.getInputStream();BufferedReaderbr=newBufferedReader(newInputStreamReader(is,"gb2312"));下面就是解析這個字元串來,自己來吧
3、如何搭建ftp伺服器 java
可以用Socket ,歸根結底還是對IO流進行處理, 根據協議處理不同的命令,比如客戶端發送「獲取服務端目錄結構」 的命令,服務端接收後向客戶端寫出目錄結構數據,客戶端根據協議解析並顯示
4、如何用Java實現FTP伺服器
1.使用的FileZillaServer開源免費軟體,安裝過後建立的本地FTP伺服器。2.使用的apache上下載專FTP工具包,引用到工程目錄屬中。3.IDE,Eclipse,JDK6上傳和下載目錄的實現原理:對每一個層級的目錄進行判斷,是為目錄類型、還是文件類型。如果為目錄類型,採用遞歸調用方法,檢查到最底層的目錄為止結束。如果為文件類型,則調用上傳或者下載方法對文件進行上傳或者下載操作。貼出代碼:(其中有些沒有代碼,可以看看,還是很有用處的)!
5、求用java寫一個ftp伺服器客戶端程序。
import java.io.*;
import java.net.*;public class ftpServer extends Thread{ public static void main(String args[]){
String initDir;
initDir = "D:/Ftp";
ServerSocket server;
Socket socket;
String s;
String user;
String password;
user = "root";
password = "123456";
try{
System.out.println("MYFTP伺服器啟動....");
System.out.println("正在等待連接....");
//監聽21號埠
server = new ServerSocket(21);
socket = server.accept();
System.out.println("連接成功");
System.out.println("**********************************");
System.out.println("");
InputStream in =socket.getInputStream();
OutputStream out = socket.getOutputStream();
DataInputStream din = new DataInputStream(in);
DataOutputStream dout=new DataOutputStream(out);
System.out.println("請等待驗證客戶信息....");
while(true){
s = din.readUTF();
if(s.trim().equals("LOGIN "+user)){
s = "請輸入密碼:";
dout.writeUTF(s);
s = din.readUTF();
if(s.trim().equals(password)){
s = "連接成功。";
dout.writeUTF(s);
break;
}
else{s ="密碼錯誤,請重新輸入用戶名:";<br> dout.writeUTF(s);<br> <br> }
}
else{
s = "您輸入的命令不正確或此用戶不存在,請重新輸入:";
dout.writeUTF(s);
}
}
System.out.println("驗證客戶信息完畢...."); while(true){
System.out.println("");
System.out.println("");
s = din.readUTF();
if(s.trim().equals("DIR")){
String output = "";
File file = new File(initDir);
String[] dirStructure = new String[10];
dirStructure= file.list();
for(int i=0;i<dirStructure.length;i++){
output +=dirStructure[i]+"\n";
}
s=output;
dout.writeUTF(s);
}
else if(s.startsWith("GET")){
s = s.substring(3);
s = s.trim();
File file = new File(initDir);
String[] dirStructure = new String[10];
dirStructure= file.list();
String e= s;
int i=0;
s ="不存在";
while(true){
if(e.equals(dirStructure[i])){
s="存在";
dout.writeUTF(s);
RandomAccessFile outFile = new RandomAccessFile(initDir+"/"+e,"r");
byte byteBuffer[]= new byte[1024];
int amount;
while((amount = outFile.read(byteBuffer)) != -1){
dout.write(byteBuffer, 0, amount);break;
}break;
}
else if(i<dirStructure.length-1){
i++;
}
else{
dout.writeUTF(s);
break;
}
}
}
else if(s.startsWith("PUT")){
s = s.substring(3);
s = s.trim();
RandomAccessFile inFile = new RandomAccessFile(initDir+"/"+s,"rw");
byte byteBuffer[] = new byte[1024];
int amount;
while((amount =din.read(byteBuffer) )!= -1){
inFile.write(byteBuffer, 0, amount);break;
}
}
else if(s.trim().equals("BYE"))break;
else{
s = "您輸入的命令不正確或此用戶不存在,請重新輸入:";
dout.writeUTF(s);
}
}
din.close();
dout.close();
in.close();
out.close();
socket.close();
}
catch(Exception e){
System.out.println("MYFTP關閉!"+e);
}
}}
6、java中怎麼實現ftp伺服器
我知道apache有個commons net包,其中的copyFTPClient類可以實現客戶端和服務之間的文件傳輸,但是我如果使用這種方式的話,就得將一台伺服器上的文件傳到我本地,再將這個文件傳到另一台伺服器上,感覺這中間多了一步操作;
7、Java實現ftp伺服器源代碼
/**
* 創建日期:Dec 23, 2008
* 類名:Ftp.java
* 類路徑:org
* 修改日誌:
*/
package org;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import sun.net.TelnetInputStream;
import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;
/**
* @author 南山一根蔥
* @Description ftp操作
*/
public class Ftp {
/**
* 獲取Ftp目錄下的列表
*/
public void getftpList() {
String server = "";// 輸入的FTP伺服器的IP地址
String user = "";// 登錄FTP伺服器的用戶名
String password = "";// 登錄FTP伺服器的用戶名的口令
String path = "";// FTP伺服器上的路徑
try {
FtpClient ftpClient = new FtpClient();// 創建FtpClient對象
ftpClient.openServer(server);// 連接FTP伺服器
ftpClient.login(user, password);// 登錄FTP伺服器
if (path.length() != 0) {
ftpClient.cd(path);
}
TelnetInputStream is = ftpClient.list();
int c;
while ((c = is.read()) != -1) {
System.out.print((char) c);
}
is.close();
ftpClient.closeServer();// 退出FTP伺服器
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
}
/**
* 下載FTP上的文件
*/
public void getFtpFile() {
String server = "";// 輸入的FTP伺服器的IP地址
String user = "";// 登錄FTP伺服器的用戶名
String password = "";// 登錄FTP伺服器的用戶名的口令
String path = "";// FTP伺服器上的路徑
String filename = "";// 下載的文件名
try {
FtpClient ftpClient = new FtpClient();
ftpClient.openServer(server);
ftpClient.login(user, password);
if (path.length() != 0)
ftpClient.cd(path);
ftpClient.binary();
TelnetInputStream is = ftpClient.get(filename);
File file_out = new File(filename);
FileOutputStream os = new FileOutputStream(file_out);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
is.close();
os.close();
ftpClient.closeServer();
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
}
/**
* 上傳文件到FTP
*/
public void putFtpFile() {
String server = "";// 輸入的FTP伺服器的IP地址
String user = "";// 登錄FTP伺服器的用戶名
String password = "";// 登錄FTP伺服器的用戶名的口令
String path = "";// FTP伺服器上的路徑
String filename = "";// 上傳的文件名
try {
FtpClient ftpClient = new FtpClient();
ftpClient.openServer(server);
ftpClient.login(user, password);
if (path.length() != 0)
ftpClient.cd(path);
ftpClient.binary();
TelnetOutputStream os = ftpClient.put(filename);
File file_in = new File(filename);
FileInputStream is = new FileInputStream(file_in);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
is.close();
os.close();
ftpClient.closeServer();
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
}
}
8、java做ftp伺服器需要什麼jar包
apache的包:commons-net.jar
主要使用到的類:
org.apache.commons.net.ftp.FTPClient;
org.apache.commons.net.ftp.FTPFile;
org.apache.commons.net.ftp.FTPReply;
JDK中也有自帶的ftp包:
sun.net.ftp.下有FTP操作類
但sun已經不建議使版用了, 建議樓主使用apache的包權
9、如何用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){}
}
10、怎麼用java代碼創建ftp用戶和密碼
創建ftp用戶名和密碼,其實就在ftp伺服器的用戶文件裡面添加條記錄。
方法有兩種,我說專下思路。屬
一、你可以用java程序找到相應的配置文件,打開、把用戶名密碼寫入進去。ok了。
二、你用用java程序調用創建ftp用戶的命令,來創建ftp用戶。