用Java实现FTP服务器解决方案

FTP 命令

FTP 的主要操作都是基于各种命令基础之上的。常用的命令有:

· 设置传输模式,它包括ASCⅡ(文本) 和BINARY 二进制模式;

· 目录操作,改变或显示远程计算机的当前目录(cd、dir/ls 命令);

· 连接操作,open命令用于建立同远程计算机的连接;close命令用于关闭连接;

· 发送操作,put命令用于传送文件到远程计算机;mput 命令用于传送多个文件到远程计算机;

· 获取操作,get命令用于接收一个文件;mget命令用于接收多个文件。

编程思路

根据FTP 的工作原理,在主函数中建立一个服务器套接字端口,等待客户端请求,一旦客户端请求被接受,服务器程序就建立一个服务器分线程,处理客户端的命令。如果客户端需要和服务器端进行文件的传输,则建立一个新的套接字连接来完成文件的操作。

编程技巧说明

1.主函数设计

在主函数中,完成服务器端口的侦听和服务线程的创建。我们利用一个静态字符串变量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){}
}

2. 线程类的设计

线程类的主要设计都是在run()方法中实现。用run()方法得到客户端的套接字信息,根据套接字得到输入流和输出流,向客户端发送欢迎信息。

3. FTP 命令的处理

(1) 访问控制命令

· user name(user) 和 password (pass) 命令处理代码如下:

if(str.startsWith("USER")){
 user = str.substring(4);
 user = user.trim();
 out.println("331 Password");
}
if(str.startsWith("PASS"))
out.println("230 User "+user+" logged in.");

时间: 2024-09-28 06:16:03

用Java实现FTP服务器解决方案的相关文章

用Java实现FTP服务器解决方案_JSP编程

FTP 命令 FTP 的主要操作都是基于各种命令基础之上的.常用的命令有: · 设置传输模式,它包括ASCⅡ(文本) 和BINARY 二进制模式; · 目录操作,改变或显示远程计算机的当前目录(cd.dir/ls 命令); · 连接操作,open命令用于建立同远程计算机的连接:close命令用于关闭连接; · 发送操作,put命令用于传送文件到远程计算机:mput 命令用于传送多个文件到远程计算机; · 获取操作,get命令用于接收一个文件:mget命令用于接收多个文件. 编程思路 根据FTP

怎么用java显示ftp服务器上文件夹中的图片在jsp页面上?

问题描述 怎么用java显示ftp服务器上文件夹中的图片在jsp页面上? ftp在另一台windows上,访问jsp页面要读取并显示出ftp上的图片. ftp上的图片路径保存在数据库中,操作ftp的jar我选了apache的FtpClient. 现在的问题是,action获取到ftp上的文件后,是下载下来再读取成流输出到页面呢?还是直接从FTP获取成流输出到页面?如果有,求思路,最好有代码举例我不想ftp上的文件下载到部署环境上然后再输出到页面,想通过读取ftp的流直接显示到页面,页面关闭后流就

Java连接ftp服务器实例代码_java

废话不多说了,直接给大家贴java代码了. import java.io.IOException; import sun.net.TelnetInputStream; import sun.net.ftp.FtpClient; public class MyFtp { static FtpClient myFtp; static String hostname; static String username; static String password; /** * @author cutel

Java实现FTP服务器功能实例代码_java

FTP(File Transfer Protocol 文件传输协议)是Internet 上用来传送文件的协议.在Internet上通过FTP 服务器可以进行文件的上传(Upload)或下载(Download).FTP是实时联机服务,在使用它之前必须是具有该服务的一个用户(用户名和口令),工作时客户端必须先登录到作为服务器一方的计算机上,用户登录后可以进行文件搜索和文件传送等有关操作,如改变当前工作目录.列文件目录.设置传输参数及传送文件等.使用FTP可以传送所有类型的文件,如文本文件.二进制可执

Java通过FTP服务器上传下载文件的方法_java

对于使用文件进行交换数据的应用来说,使用FTP 服务器是一个很不错的解决方案. 关于FileZilla Server服务器的详细搭建配置过程,详情请见FileZilla Server安装配置教程.之前有朋友说,上传大文件(几百M以上的文件)到FTP服务器时会重现无法重命名的问题,但本人亲测上传2G的文件到FileZilla Server都没有该问题,朋友们可以放心使用该代码. FavFTPUtil.Java package com.favccxx.favsoft.util; import jav

关于用java搭建FTP服务器 下载远端Linux系统下文件的一些问题

问题描述 前提是这样的:我们每天都需要远端一台服务器上的数据,那台服务器姑且叫做B吧,B是Linux操作系统,而本地A是windows,现在用java在A上搭建一个FTP服务器,说白了也就是用java语言写一个FTP客户端,实现对远端数据的下载....这两天找找资料给弄出来了,因为windows对windows和windows对Linux还不一样,所以代码都点乱,不过功能可以实现平时工作需要的程序猿们可以拿去参考一下,,另外就是请各位批评指正,把代码优化改善一下子...谢了....代码:pack

用Java实现FTP服务器

ftp服务器 FTP 命令  FTP 的主要操作都是基于各种命令基础之上的.常用的命令有:  ◆ 设置传输模式,它包括ASCⅡ(文本) 和BINARY 二进制模式;    ◆ 目录操作,改变或显示远程计算机的当前目录(cd.dir/ls 命令);  ◆ 连接操作,open命令用于建立同远程计算机的连接:close命令用于关闭连接;  ◆ 发送操作,put命令用于传送文件到远程计算机:mput 命令用于传送多个文件到远程计算机;  ◆ 获取操作,get命令用于接收一个文件:mget命令用于接收多个

java实现将文件上传到ftp服务器的方法_java

本文实例讲述了java实现将文件上传到ftp服务器的方法.分享给大家供大家参考,具体如下: 工具类: package com.fz.common.util; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; imp

java-Java 实现ftp服务器和客户端

问题描述 Java 实现ftp服务器和客户端 写过ftp服务器端和客户端的,小弟在此求个源代码或者思路参考下,主要是想加强下对IO流的理解,顺便复习下ftp.ftp服务器那块我想自己写,不想借用任何工具搭建的FTP,不知道是否能写成.谢谢各位大牛光临. 解决方案 Github上有很多FTP Server/Client的开源代码都可以参考