资源简介

解析FTP协议命令,实现FTP端的下载和上传文件功能

资源截图

代码片段和文件信息



import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class FtpClient {
Socket socket;
InputStream ins;
OutputStream outs;
public FtpClient(Socket socket) throws IOException {
this.socket = socket;
this.ins=socket.getInputStream();
this.outs=socket.getOutputStream();
}

public void login(String userString passer) throws Exception{
byte[] temp0=new byte[512];
//得到FTP响应
int size=ins.read(temp0);
String s=new String(temp00size);
//输出响应
System.out.println(s);
String name=“USER “+user+“\r\n“;
//写入登录信息s
outs.write(name.getBytes());
outs.flush();
//服务器返回信息
size=ins.read(temp0);
//输出:
s=new String(temp00size);
System.out.println(s);
//密码
String pass=“PASS “+passer+“\r\n“;
//写入密码
outs.write(pass.getBytes());
//得到返回信息
size=ins.read(temp0);
s=new String(temp00size);
System.out.println(s);
Scanner sc2=new Scanner(System.in);
System.out.println(“请选择是上传还是下载(输入1为下载,2为上传):“);
int Choose=sc2.nextInt();
if(Choose==1){
this.download();
}else if(Choose==2){
this.upload();
}else{
System.out.println(“输入错误!!good bye!“);

}

}
public Socket getPort() throws Exception{
        //写入FTP模式取得端口,并链接
byte[] temp=new byte[1024];
int size=0;
String s;
outs.write(“PASV \r\n“.getBytes());
        //服务器返回信息
size=ins.read(temp);
s=new String(temp0size);
System.out.println(s);
String[] ports=s.split(““);
//取得数据传输端口
String lastport=ports[5].substring(0 (ports[5].length()-3));
int port=Integer.valueOf(ports[4])*256+Integer.valueOf(lastport);
//链接服务器数据传输端口获得数据传输的输入输出流
Socket so=new Socket(“172.18.24.3“port);
return so;
}
public void download() throws Exception {
        //写入FTP模式
byte[] temp=new byte[1024];
int size=0;
Socket so=getPort();
InputStream input=so.getInputStream();
OutputStream output=so.getOutputStream();
//控制台输入下载命令
Scanner sc3=new Scanner(System.in);
System.out.println(“请输入下载的文件名(用户根目录E盘):“);
String name=sc3.nextLine();
//服务器上的文件
// File srcfile=new File(“F:/“+name);
//下载到的地方
File dstfile=new File(“D:/“+name);
// FileInputStream fin=new FileInputStream(srcfile);
FileOutputStream fout=new FileOutputStream(dstfile);

String downName=“RETR “+name+“\r\n“;
outs.write(downName.getBytes());
outs.flush();
        //服务器返回信息
size=ins.read(temp);
//输出:
String s2=new String(temp0size);
System.out.println(s2);

while((size=input.read(temp))!=-1){
fout.write(temp 0 size);
fout.flush();
}

System.out.println(“文件下载成功!默认在D盘.“);
//写入退出命令
outs.write(“quit“.getBytes());
//读出返回信息
size=ins.read(temp);
//打印
socket.close();
String quit=new String(temp0size);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4804  2010-04-22 19:12  FTPclinet\FtpClient.java

     目录          0  2010-04-22 19:12  FTPclinet

----------- ---------  ---------- -----  ----

                 4804                    2


评论

共有 条评论