ftp指什么,第1张

FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。

其中FTP服务器用来存储文件用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。

FTP工作原理:

与许多互联网应用一样,FTP服务也是一个客户机用反务器系统(C/S)。用户通过一个支持FTP协议的客户端程序,连接到远程主机上的FTP服务器程序。用户通过客户端程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户端。

以文件下载为例,当启动FTP客户端程序从远程计算机下载文件时,事实上启动了两个程序:一个本机上的FTP客户端程序,它向FTP服务器提出拷下载文件的请求;

另一个是启动了远程计算机的上的FTP服务器程序,它响应你的请求并将指定的文件传送到你的计算机中。目前,FTP的应用软件有很多,如服务器端的有Server-U、FileZilla等,客户端的有CuteFtp 、 FlashFTP等,极大地方便了用户的使用。

Socket TCP

反射API介绍

4Java Socket编程 TCP 协议编程

1) TCP工作模型: 先找

堂(主机/IP), 到食堂以后找窗口

(Socket/套接字 端口号), 服务员等待连接,客户向服务员发起连接

连接以后, 一个窗口可以为每个客户安排一个服务员(线程)提供服务,

每个服务过程可以双向交流通讯(流), 通讯完成后要关闭连接

5 TCP 服务端编程(食堂)(javaio,javanet,javalang)

1) 创建ServerSocket实例绑定一个服务端口(Socket/套接字 端口号)

2) 开始ServerSocket实例 的监听, 等待客户端的连接

3) 如果有客户连接进来, 就获得了客户的套接字(Socket)实例

客户的套接字(Socket)实例中包括与客户端建立的连接流

4) 为这个客户(Socket) 创建一个服务线程, 提供服务(run方法)

5) 继续等待下一个连接, 返回到2)

6) 服务线程 完成通讯服务过程

7) 端口号: 0~65535, 1K以下留给系统使用

6 TCP 客户端编程

1) 创建Socket 实例, 连接到服务器端, 成功创建s就表示连接到了

服务器

Socket s = new Socket("host", port)

2) 客户端 Socket 与服务器端 Socket 对应, 都包含输入, 输出流

客户端的sgetInputStream() 连接于服务器sgetOutputStream()

客户端的sgetOutputStream()连接于服务器sgetInputStream()

3) 使用线程处理 网络流

7 Java 反射

1) 反射是Java自我管理(类, 对象)的机制

2) 可以通过反射机制发现对象的类型 发现类型的方法/属性/构造器

3) Java 反射 可以创建对象 并 访问任意对象方法和属性等

4) Class 加载

类加载到内存: java 将磁盘类文件加载到内存中,为一个对象(实例)

这个对象是Class的实例, 也就是 这些对象都是Class实例

5)Class 实例代表Java中类型, 基本类型的类型: intclass, longclass

类类型 Class 实例获得如下:

Class cls = Stringclass;

Class cls = ClassforName("javalangString");

Class cls = "abc"getClass();

以上方法获得cls 是同一个对象, 就是String 类内存加载的结果

package javase2day06ftp;

import javaioBufferedOutputStream;

import javaioFile;

import javaioFileOutputStream;

import javaioIOException;

import javaioInputStream;

import javaioOutputStream;

import javanetSocket;

import javautilScanner;

/

ftp 客户端 可以使用命令 ls pwd get

/

public class FtpClient {

public static void main(String[] args)

throws IOException{

FtpClient client = new FtpClient();

clientopen();

}

public void open() throws IOException{

Socket s = new Socket("localhost", 9000);

InputStream in = sgetInputStream();

OutputStream out = sgetOutputStream();

//处理客户端对服务器的请求

new RequestProcess(out)start();

//处理服务器的反馈信息

new ResponseProcess(in)start();

}

//处理客户端对服务器的请求

class RequestProcess extends Thread{

OutputStream out;

public RequestProcess(OutputStream out) {

thisout = out;

}

public void run() {

try{

Scanner sc = new Scanner(Systemin);

while(true){

String s = scnextLine();

IOUtilsprintln(out, s);

if(sequals("bye")){

Systemexit(0);

}

}

}catch(IOException e){

eprintStackTrace();

}

}

}

class ResponseProcess extends Thread{

InputStream in;

public ResponseProcess(InputStream in) {

thisin = in;

}

public void run() {

try{

while(true){

String header = IOUtilsreadLine(in);

if(headerstartsWith("text,")){

show(header,in);

}else if(headerstartsWith("file,")){

save(header, in);

}

}

}catch(IOException e){

eprintStackTrace();

}

}

}

public void show(String header, InputStream in)

throws IOException {

int n = IntegerparseInt(headersplit(",")[1]);

for(int i=0; i<n; i++){

String s = IOUtilsreadLine(in);

Systemoutprintln(s);

}

}

public void save(String header, InputStream in)

throws IOException{

File dir = new File("ftp");

if(!direxists()){

dirmkdir();

}

//header: file,10,filename

String[] data = headersplit(",");

long length = LongparseLong(data[1]);

String filename = data[2];

File file = new File(dir, filename);

BufferedOutputStream out =

new BufferedOutputStream(

new FileOutputStream(file));

for(long i=0; i<length; i++){

int b = inread();

outwrite(b);

}

outclose();

}

}

package javase2day06ftp;

import javaioFile;

import javaioFileInputStream;

import javaioIOException;

import javaioInputStream;

import javaioOutputStream;

import javanetServerSocket;

import javanetSocket;

/

模拟FTP服务器, 支持命令pwd,ls,get file

协议: type,length,value TLV格式

文本: text,5\nline1\nline2\nline3\nline4\nline5\n

文件: file,4,filename\n 41 42 43 44

text,5\nline1\nline2\nline3\nline4\nline5\nfile,4,filename\n 41 42 43 44

/

public class FtpServer {

public static void main(String[] args)

throws IOException{

FtpServer server = new FtpServer();

serverstart();

}

public void start() throws IOException{

ServerSocket ss = new ServerSocket(9000);

while(true){

Socket s = ssaccept();

new Agent(s)start();

}

}

class Agent extends Thread{

Socket s;

public Agent(Socket s) {

thiss = s;

}

public void run() {

try{

InputStream in = sgetInputStream();

OutputStream out = sgetOutputStream();

//向客户端发送, 先发协议头,再发送文本行

outwrite("text,1\n"getBytes());//协议头

//发送消息内容, 一行文本消息

outwrite("欢迎使用FTP演示服务器!\n"getBytes());

outflush();

while(true){

//读取客户端发送到命令

String cmd = IOUtilsreadLine(in)trim();

if("pwd"equals(cmd)){//显示当前目录

pwd(out);

}else if("ls"equals(cmd)){

ls(out);

}else if(cmdstartsWith("get ")){

get(cmd, out);

}else if("bye"equalsIgnoreCase(cmd)){

IOUtilsprintln(out, "text,1");

IOUtilsprintln(out, "Bye, Bye!");

sclose();

}else{

outwrite("text,1\n"getBytes());//协议头

outwrite("只支持pwd,ls,get,bye!\n"getBytes());

outflush();

}

}

}catch(IOException e){

eprintStackTrace();

}

}

}

public void pwd(OutputStream out)

throws IOException{

File dir = new File("");

IOUtilsprintln(out, "text,1");

IOUtilsprintln(out, dirgetCanonicalPath());

}

public void ls(OutputStream out)

throws IOException{

File dir = new File("");

File[] files = dirlistFiles();

IOUtilsprintln(out, "text,"+fileslength);

for (File f : files) {

if(fisDirectory()){

IOUtilsprintln(out, "["+fgetName()+"]");

}else{

IOUtilsprintln(out, fgetName());

}

}

}

public void get(String cmd, OutputStream out)

throws IOException{

//cmd="get filename"

String name = cmdsplit("\\s+")[1];

File file = new File(name);

if(! fileexists()){

IOUtilsprintln(out, "text,1");

IOUtilsprintln(out, "没有文件呀!"+name);

return;

}

//文件协议头:

IOUtilsprintln(out,

"file,"+filelength()+","+name);

FileInputStream in =

new FileInputStream(file);

IOUtilscp(in, out);

outflush();

inclose();

IOUtilsprintln(out, "text,1");

IOUtilsprintln(out, "发送成功:"+name);

}

}

1把那WIN2000

SERVER系统安装光盘放进去!

2控制面板--添加删除程序--添加删除WINDOWS组件--选中Internet组件服务--详细信息--选中FTP服务--下一步开始安装

3控制面板--(切换到经典视图)管理工具--INTERNET信息服务--打开本地计算机--FTP服务--右击默认FTP站点属性--目录--更改目录(目录文件必须存在)--选中文件允许读和写(不知道在什么地方改了)--确定

4打开WINDOWS放火墙--设置--例外--添加程序--inetinfoexe(在C盘里,你搜索一下,我忘记在什么位置了)

中小型公司建议就这样配置够了,如果要设置什么权限问题,很麻烦的事情,现在这样是所有匿名用户都有上传和下载的权利!

下面教你使用FTP:

a开始--运行--CMD--IPCONFIG

把里面的IP信息填写到到本地连接IP里

比如你的IP是1921681112

b所有用户都直接在地址栏输入:

ftp:\\1921681112

就可以打开了,任意读和写操作!

用Serv-U 吧,简单易懂,非常容易上手

如何建立一个FTP服务器(SERV-U使用教程)

Serv-U 是一个可以运行于Windows 95/98/2000/ME 和 Windows NT 40下的FTP服务器程序。有了它,你的个人电脑 就可以模拟为一个FTP服务器,也就是说,你所连接的网络中的计算机用户可以访问你的个人电脑,通过FTP协议(文件传输协议)复制、移动、删除你的电脑中的文件或文件夹,可以做一切权限所允许的事情。FTP协议规定了计算机之间的标准通讯方式,使所有不同类型,不同工作系统,不同格式的电脑之间得以互换文件。它可以用最简单的方式创建用户帐号,并且在硬盘空间上划分一定的区域用以存放文件,让用户以各种FTP客户端软件(如CuteFTP、WS_FTP等)上传或下载所需要的文件。

1、如何建立第一步

安装原版软件和汉化补丁,这个过程就不多说了,想必没人不会的。

2、安装完成后程序会自动运行,你也可以在菜单中选择运行。第一次运行程序,它会弹出设置向导窗口,将会带你完成最初的设置。单击“下一步”,出现“显示菜单图像”的窗口,问你是否在菜单中显示小图像,看各人喜欢了。

3、 单击“下一步”,这个窗口是让你在本地第一次运行FTP服务器,只要“下一步”就行了。

4、 接下来要你输入你的IP地址,如果你自己有服务器,有固定的IP,那就请输入IP地址,如果你只是在自己电脑上建立FTP,而且又是拨号用户,有的只是动态IP,没有固定IP,那这一步就省了,什么也不要填,Serv-U 会自动确定你的IP地址,单击“下一步”;

5、 在这儿要你输入你的域名,如果有的话,如:FEIMIAOno-ipcom,没有的话,就随便填一个;

6、 “下一步”,询问你是否允许匿名访问。一般说来,匿名访问是以Anonymous为用户名称登录的,无需密码,当然如果你想成立一个会员区什么的,就应该选择“否”,不让随便什么人都可以登录,只有许可用户才行,在此我们填“是”;

7、 “下一步”,问你匿名用户登录到你的电脑时的目录,你可以自己指定一个硬盘上已存在的目录,如E:\temp;

8、 “下一步”,询问你是否要锁定该目录,锁定后,匿名登录的用户将只能认为你所指定的目录(F:\temp)是根目录,也就是说它只能访问这个目录下的文件和文件夹,这个目录之外就不能访问,对于匿名用户一般填“是”;

9、 “下一步”,询问你是否创建命名的帐号,也就是说可以指定用户以特定的帐号访问你的FTP,这对于办会员区可很有用哦,你可以对于每个人都创建一个帐号,每个帐号的权限不同,就可以不同程序地限制每个人的权利,方法将在后面讲到,这里选择“是”;

10、 “下一步”,请你填入所要建立的帐号的名称

11、“下一步”,请输入密码,如:874

12、 “下一步”,询问登录目录是什么,这一步与第7步一样,如:F:\temp

13、 “下一步”,询问你是否要锁定该目录,同第8步,这里选择“否”;

14、 接下来询问你这次创建的用户的管理员权限,有几项选择:无权限,组管理员,域管理员,只读管理员和系统管理员,每项的权限各不相同;这里选择“系统管理员”;

15、 最后一步,点击“完成”就OK了,你有什么需要修改的,可以点“上一步”,或者进入Serv-U管理员直接修改。至此,我们建立了一个域ftpabccom,两个用户,一个Anonymous,一个ldr。既然我们已经建立好FTP服务器,那么我们就应该可以用FTP客户端软件来尝试登录。怎么办呢?其实很简单,我们不用上网,就可以测试。我们知道,不上网时,本地机的IP地址默认就为127001,FTP端口号为21。

Serv-U管理员中的各项设置

在设置完成后,将会进入Serv-U管理员的主界面,左边窗格中显示各个栏目,右边窗格中显示各个栏目的具体选项,下面就大概讲一讲设置内容。

1、 中,我们可以人 为地控制Serv-U引擎的运行或停止,记住,在Win 9x/Me 中,我们就要在此选择“系统服务”,才会运行Serv-U引擎。

2、 “许可”,如果你花美元买了注册号,就可以在此输入。

3、 “设置”,这个设置是对于“本地服务器”来说的。“常规”设置中可以限制服务器的最大速度,可以拦截FXP(站点到站点传送),也可以限制用户的数量,这样不至于你的服务器被拖跨。“目录缓存”设置中允许你自己确定目录列表的个数以及超时时间,在Windows 95 和 NT下,目录列表默认设置为25,当缓存满了之后,新的请求将替换老的请求。“高级”设置中可以让你自己定义服务器、Socket、文件的上传和下载的各项设置。

4、 “活动”,在这里记录了用户的活动日志,已封锁的IP的活动日志,以及任务日志;任务日志中显示的就是你开始停止的各项操作记录,你可以点击右键,选择此过滤文本,使其只显示你所想见的内容。

5、 “域”,这里包含了你一开始根据向导所建立的用户、设置、域等。“域--设置”中所设置的内容其实与第3步差不多,只是它更加具体,可以对于每一个不同域定制。“域--活动”中记载了这个域下所有用户的活动情况。

6、 “域--组”,我们可以自己建立一些便于管理的组,然后把一类的用户归到一个组中。

7、 “域--用户”中

A、

对于一些不守规则的人,我们可以选择“禁用帐号”,虽然有帐号,但可以使用户一时间无法登录;你也可以设置让程序到达某个日期后自动删除某个帐号;下面几栏是这个帐号的基本信息,我们都可以在此更改,其中密码改过后并不显示,而是统一显示<<Encrypted>>,特别要注意选项“锁定用户于主目录”,什么意思呢?大家应该碰到,每次我们登录到FTP服务器上后,在根目录下只显示“/”,选择这项选项后,就是这样,如果不选,会出现什么情况呢?你可以做一下试验,在根目录下将显示“/f:/myself/”,也就是说显示了你硬盘中的绝对地址,这在某些情况下是很危险的,有不怀好意的高手,你就麻烦了!

B、“常规”栏

你可以隐藏属性为隐藏的文件,可以限制同一IP的登录个数,是否允许用户更改密码(这需要客户端软件的支持),最大上传下载的速度,超时时间以及空闲时间,你也可以限制最大用户数量,如20,说明同时只能有20个用户登录。

C、“目录访问”栏

在此你可以控制用户对于文件目录的权限,对文件有读取、写入、删除、追加、执行等操作,对于文件夹有列表、创建、删除,以及是否继承子目录;如果觉得目录不够,你也可以添加可访问的目录。

D、“IP访问”栏

在这里你可以规定某个IP是否可以访问你的FTP服务器,你可以拒绝它的访问,只要填上相应的IP地址,以后由这个IP的访问通通被拦下。

E、“上传/下载率”栏

在这里你可以设置上传和下载之间的比值,控制好上传和下载之间的数据流量关系。

F、“配额”栏

这里你可以为每个FTP用户设置磁盘空间,点击“计算当前”,可以知道当前目录下的所有空间大小,在“最大”一栏中填入你想要限制的容量。最后有一点,改过设置后一定要点击右键,选择“应用”使设置生效才行,否则一切都白做了!!

在网上做过软件下载的人都知道,建立一个FTP下载服务器相对比较简单,一般用WIN2000下自带的IIS就可以,但IIS在功能上好多都不尽人如意,下面我就介绍一款功能非常强大,但使用简单的FTP服务器构建软件-Serv-U FTP Server,让我们也来体验一下自己DIY FTP服务器的快乐! 在说明使用之前,让我先大致介绍一下Serv-U(本文中提到Serv-U版本为30017), Serv-U 是一个可以运行于Windows 95/98/2000/ME 和 Windows NT 40下的FTP服务器程序如图所示,

有了它,你的个人电脑就可以模拟为一个FTP服务器,也就是说,你所连接的网络中的计算机用户可以访问你的个人电脑,通过FTP协议(文件传输协议)复制、移动、删除你的电脑中的文件或文件夹,可以做一切权限所允许的事情。FTP协议规定了计算机之间的标准通讯方式,使所有不同类型,不同操作系统,不同格式的电脑之间得以互换文件。它可以用最简单的方式创建用户帐号,并且在硬盘空间上划分一定的区域用以存放文件,让用户以各种FTP客户端软件(如CuteFTP、WS_FTP等)上传或下载所需要的文件。

有许多FTP服务器和客户端软件可用于不同的系统中,Serv-U是用于运行MS-Windows 并且已安装了WinSock 版本 11 兼容 TCP/IP协议的个人电脑中的,这几乎包括了所有的Windows操作系统。

Serv-U由两大部分组成,引擎和用户界面。Serv-U引擎(ServUDaemonexe)其实是一个常驻后台的程序,也是Serv-U整个软件的心脏部分,它负责处理来自各种FTP客户端软件的FTP命令,也是负责执行各种文件传送的软件。在运行Serv-U引擎也就ServUDaemonexe

文件后,我们看不到任何的用户界面,它只是在后台运行,通常我们无法影响它,但在ServUAdminexe中我们可以停止和开始它。Serv-U引擎可以在任何Windows平台下作为一个本地系统服务来运行,系统服务随操作系统的启动而开始运行,而后我们就可以运行用户界面程序了。在Win NT/2000系统中,Serv-U会自动安装为一个系统服务,但在Win 9x/Me中,你需要在“服务器”面板中选择“自动开始”,才能让它转为系统服务。Serv-U用户界面(ServUAdminexe)也就是Serv-U管理员,它负责与Serv-U引擎之间的交互。它可以让用户配置 Serv-U,包括创建域、定义用户、并告诉服务器是否可以访问。启动Serv-U管理员最简单的办法就是直接点接系统栏的“U”形图标,当然,你也可以从开始菜单中运行它。

在此有必要把Serv-U中的一些重要的概念给大家讲清楚:每个正在运行的Serv-U引擎可以被用来运行多个“虚拟”的FTP服务器,在管理员程序中,每个“虚拟”的FTP服务器都称为“域”,因此,对于服务器来说,不得不建立多个域时是非常有用的。每个域都有各自

的“用户”、“组”和设置。一般说来,“设置向导”会在你第一次运行应用程序时设置好一个最初的域和用户帐号。服务器、域和用户之间的关系大家可以参考下表:

Serv-U 服务器

域 1

用户帐号 1

用户帐号 2

用户帐号 3

域 2

用户帐号 1

用户帐号 2

域 3

用户帐号 1

用户帐号 1

这个表有点类似与Serv-U管理员中服务器、域和用户的排列。

Serv-U FTP Server 是试用软件,安装后三十天内,你可以作为“专业版本”使它,但试用期过后,你就只能作为免费的“个人版

本”使用了,只有基本功能了。

好了,说了这么多,还没到关键部分-如何自己来建立FTP服务器。下面我就一步一步来说明。

一、 安装原版软件和汉化补丁,这个过程就不多说了,想必没人不会的。

二、 建立第一个本地FTP服务器

安装完成后程序会自动运行,你也可以在菜单中选择运行。

1、 第一次运行程序,它会弹出设置向导窗口如图,

将会带你完成最初的设置,

2、 单击“下一步”,出现“显示菜单图像”的窗口,问你是否在菜单中显示小图像,看各人喜欢了;

3、 单击“下一步”,这个窗口是让你在本地第一次运行FTP服务器,只要“下一步”就行了。

4、 接下来要你输入你的IP地址如图,

如果你自己有服务器,有固定的IP,那就请输入IP地址,如果你只是在自己电脑上建立FTP,而且又是拨号用户,有的只是动态IP,没有固定IP,那这一步就省了,什么也不要填,Serv-U 会自动确定你的IP地址,“下一步”;

5、 在这儿要你输入你的域名,如图

如果你有的话,如:ftpabccom,没有的话,就随便填一个;

6、 “下一步”,询问你是否允许匿名访问如图

一般说来,匿名访问是以Anonymous为用户名称登录的,无需密码,当然如果你想成立一个会员区什么的,就应该选择“否”,不让随便什么人都可以登录,只有许可用户才行,在此我们填“是”;

7、 “下一步”,问你匿名用户登录到你的电脑时的目录,如图,

你可以自己指定一个硬盘上已存在的目录,如F:_temp_xyz;

8、 “下一步”,询问你是否要锁定该目录,锁定后,匿名登录的用户将只能认为你所指定的目录(F:_temp_xyz)是根目录,也就是说他只能访问这个目录下的文件和文件夹,这个目录之外就不能访问,对于匿名用户一般填“是”;

9、 “下一步”,询问你是否创建命名的帐号,也就是说可以指定用户以特定的帐号访问你的FTP,这对于办会员区可很有用哦,你可以对于每个人都创建一个帐号,每个帐号的权限不同,就可以不同程序地限制每个人的权利,方法将在后面讲到,这里选择“是”;

10、 “下一步”,请你填入所要建立的帐号的名称,如图,如:ldr,

11、 “下一步”,请输入密码,如:123,

12、 “下一步”,询问登录目录是什么,这一步与第7步一样,如:F:_temp

13、 “下一步”,询问你是否要锁定该目录,同第8步,这里选择“否”;

14、 接下来询问你这次创建的用户的管理员权限,如图,

有几项选择:无权限,组管理员,域管理员,只读管理员和系统管理员,每项的权限各不相同;这里选择“系统管理员”;

15、 最后一步,点击“完成”就OK了,你有什么需要修改的,可以点“上一步”,或者进入Serv-U管理员直接修改。至此,我们建立

了一个域ftpabccom,两个用户,一个Anonymous,一个ldr。

三、 既然我们已经建立好FTP服务器,那么我们就应该可以用FTP客户端软件来尝试登录。

怎么办呢?其实很简单,我们不用上网,就可以测试。我们知道,不上网时,本地机的IP地址默认就为127001,FTP端口号为21。打开FTP客户端软件,我就用FlashFXP来说明,打开快速连接,填入相应内容,如图

然后连接,如图

可以看到,我左边窗格以Anonymous登录,右边窗格以ldr登录,由于是本地机,所以速度奇快,上网后,假如我要让你登录到我的电脑上,我只要把我的上网时的IP地址给你,你就可以匿名访问我的电脑了(注意不要开防火墙),是不是很方便?

四、Serv-U管理员中的各项设置

在设置完成后,将会进入Serv-U管理员的主界面,如图

左边窗格中显示各个栏目,右边窗格中显示各个栏目的具体选项,下面就大概讲一讲设置内容。

1、 在图中,我们可以人为地控制Serv-U引擎的运行或停止,记住,在Win 9x/Me 中,我们就要在此选择“系统服务”,才会运行

Serv-U引擎。

2、 “许可”,如果你花美元买了注册号,就可以在此输入。

3、 “设置”,这个设置是对于“本地服务器”来说的。“常规”设置中,如图

可以限制服务器的最大速度,可以拦截FXP(站点到站点传送),也可以限制用户的数量,这样不至于你的服务器被拖跨。“目录缓存”设置中,如图

允许你自己确定目录列表的个数以及超时时间,在Windows 95 和 NT下,目录列表默认设置为25,当缓存满了之后,新的请求将替换老的请求。“高级”设置中,如图

可以让你自己定义服务器、Socket、文件的上传和下载的各项设置。

4、 “活动”,在这里记录了用户的活动日志,已封锁的IP的活动日志,以及任务日志;任务日志中显示的就是你开始停止的各项操作记录,你可以点击右击,选择一此过滤文本,使其只显示你所想见的内容,如图

5、 “域”,这里包含了你一开始根据向导所建立的用户、设置、域等。“域--设置”中所设置的内容其实与第3步差不多,只是它更

加具体,可以对于每一个不同域定制。“域--活动”中记载了这个域下所有用户的活动情况。

6、 “域--组”,我们可以自己建立一些便于管理的组,然后把一类的用户归到一个组中。

7、 “域--用户”中,大家可以看到一开始我们建立的两个帐号,一个Anonymous,一个ldr。现在就帐号ldr来对其中的细节设置说明一下。

A、“帐号”栏,如图

对于一些不守规则的人,我们可以选择“禁用帐号”,虽然有帐号,但可以使用户一时间无法登录;你也可以设置让程序到达某个日期后自动删除某个帐号;下面几栏是这个帐号的基本信息,我们都可以在此更改,其中密码改过后并不显示,而是统一显示<>,特别要注意选项“锁定用户于主目录”,什么意思呢?大家应该碰到,每次我们登录到FTP服务器上后,在根目录下只显示“/”,选择这项选项后,就是这样,如果不选,会出现什么情况呢?你可以做一下试验,在根目录下将显示“/f:/temp/”,也就是说显示了你硬盘中的绝对

地址,这在某些情况下是很危险的,有不怀好意的高手,你就麻烦了!

你可以隐藏属性为隐藏的文件,可以限制同一IP的登录个数,是否允许用户更改密码(这需要客户端软件的支持),最大上传下载的速

度,超时时间以及空闲时间,你也可以限制最大用户数量,如20,说明同时只能有20个用户登录。

C、“目录访问”栏,如图

在此你可以控制用户对于文件目录的权限,对文件有读取、写入、删除、追加、执行等操作,对于文件夹有列表、创建、删除,以及是否继承子目录;如果觉得目录不够,你也可以添加可访问的目录。

D、“IP访问”栏,如图

在这里你可以规定某个IP是否可以访问你的FTP服务器,你可以拒绝它的访问,只要填上相应的IP地址,以后由这个IP的访问通通被拦下。

E、“上传/下载率”栏,如图

在这里你可以设置上传和下载之间的比值,控制好上传和下载之间的数据流量关系。

F、“配额”栏,如图

这里你可以为每个FTP用户设置磁盘空间,点击“计算当前”,可以知道当前目前下的所有空间大小,在“最大”一栏中填入你想要限制的容量。

最后有一点,改过设置后一定要点击右键,选择“应用”使设置生效才行,否则一切都白做了。

用Java实现FTP服务器

2004-03-10 02:09 来源:eNet论坛

简 介

FTP(File Transfer Protocol 文件传输协议)是Internet 上用来传送文件的协议。在Internet上通过FTP 服务器可以进行文件的上传(Upload)或下载(Download)。FTP是实时联机服务,在使用它之前必须是具有该服务的一个用户(用户名和口令),工作时客户端必须先登录到作为服务器一方的计算机上,用户登录后可以进行文件搜索和文件传送等有关操作,如改变当前工作目录、列文件目录、设置传输参数及传送文件等。使用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(argslength != 0) {

initDir = args[0];

}else{ initDir = "c:";}

int i = 1;

try{

Systemoutprintln("ftp server started!");

//监听21号端口

ServerSocket s = new ServerSocket(21);

for(;;){

//接受客户端请求

Socket incoming = saccept();

//创建服务线程

new ftpServer(incoming,i)start();

i++;

}

}catch(Exception e){}

}

2 线程类的设计

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

3 FTP 命令的处理

(1) 访问控制命令

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

if(strstartsWith("USER")){

user = strsubstring(4);

user = usertrim();

outprintln("331 Password");}

if(strstartsWith("PASS"))

outprintln("230 User "+user+" logged in");

User 命令和 Password 命令分别用来提交客户端用户输入的用户名和口令。

◆ CWD (CHANGE WORKING DIRECTORY) 命令处理代码如下:

if(strstartsWith("CWD")){

String str1 = strsubstring(3);

dir = dir+"/"+str1trim();

outprintln("250 CWD command succesful");

}

该命令改变工作目录到用户指定的目录。

◆ CDUP (CHANGE TO PARENT DIRECTORY) 命令处理代码如下:

if(strstartsWith("CDUP")){

int n = dirlastIndexOf("/");

dir = dirsubstring(0,n);

outprintln("250 CWD command succesful");

}

该命令改变当前目录为上一层目录。

◆ QUIT命令处理代码如下:

if(strstartsWith("QUIT")) {

outprintln("GOOD BYE");

done = true;

}

该命令退出及关闭与服务器的连接,输出GOOD BYE。

(2) 传输参数命令

◆ Port命令处理代码如下:

if(strstartsWith("PORT")) {

outprintln("200 PORT command successful");

int i = strlength() - 1;

int j = strlastIndexOf(",");

int k = strlastIndexOf(",",j-1);

String str1,str2;

str1="";

str2="";

for(int l=k+1;l

str1 = str2 + strcharAt(l);

}

for(int l=j+1;l<=i;l++){

str2 = str2 + strcharAt(l);

}

tempPort = IntegerparseInt(str1) 16 16 +IntegerparseInt(str2);

}

使用该命令时,客户端必须发送客户端用于接收数据的32位IP 地址和16位 的TCP 端口号。这些信息以8位为一组,使用十进制传输,中间用逗号隔开。

◆ TYPE命令处理代码如下:

if(strstartsWith("TYPE")){

outprintln("200 type set");

}

TYPE 命令用来完成类型设置。

(3) FTP 服务命令

◆ RETR (RETEIEVE) 和 STORE (STORE)命令处理的代码

if(strstartsWith("RETR")){

outprintln("150 Binary data connection");

str = strsubstring(4);

str = strtrim();

RandomAccessFile outFile = new

RandomAccessFile(dir+"/"+str,"r");

Socket tempSocket = new Socket(host,tempPort);

OutputStream outSocket

= tempSocketgetOutputStream();

byte byteBuffer[]= new byte[1024];

int amount;

try{

while((amount = outFileread(byteBuffer)) != -1){

outSocketwrite(byteBuffer, 0, amount);

}

outSocketclose();

outprintln("226 transfer complete");

outFileclose();

tempSocketclose();

}

catch(IOException e){}

}

if(strstartsWith("STOR")){

outprintln("150 Binary data connection");

str = strsubstring(4);

str = strtrim();

RandomAccessFile inFile = new

RandomAccessFile(dir+"/"+str,"rw");

Socket tempSocket = new Socket(host,tempPort);

InputStream inSocket

= tempSocketgetInputStream();

byte byteBuffer[] = new byte[1024];

int amount;

try{

while((amount =inSocketread(byteBuffer) )!= -1){

inFilewrite(byteBuffer, 0, amount);

}

inSocketclose();

outprintln("226 transfer complete");

inFileclose();

tempSocketclose();

}

catch(IOException e){}

}

文件传输命令包括从服务器中获得文件RETR和向服务器中发送文件STOR,这两个命令的处理非常类似。处理RETR命令时,首先得到用户要获得的文件的名称,根据名称创建一个文件输入流,然后和客户端建立临时套接字连接,并得到一个输出流。随后,将文件输入流中的数据读出并借助于套接字输出流发送到客户端,传输完毕以后,关闭流和临时套接字。

STOR 命令的处理也是同样的过程,只是方向正好相反。

◆ DELE (DELETE)命令处理代码如下:

if(strstartsWith("DELE")){

str = strsubstring(4);

str = strtrim();

File file = new File(dir,str);

boolean del = filedelete();

outprintln("250 delete command successful");

}

DELE 命令用于删除服务器上的指定文件。

◆ LIST命令处理代码如下:

if(strstartsWith("LIST")) {

try{

outprintln("150 ASCII data");

Socket tempSocket = new Socket(host,tempPort);

PrintWriter out2= new PrintWriter(tempSocketgetOutputStream(),true);

File file = new File(dir);

String[] dirStructure = new String[10];

dirStructure= filelist();

String strType="";

for(int i=0;i

if( dirStructure[i]indexOf("") == -1) {

strType = "d ";}

else

{strType = "- ";}

out2println(strType+dirStructure[i]);

}

tempSocketclose();

outprintln("226 transfer complete");

}

catch(IOException e){}

LIST 命令用于向客户端返回服务器中工作目录下的目录结构,包括文件和目录的列表。处理这个命令时,先创建一个临时的套接字向客户端发送目录信息。这个套接字的目的端口号缺省为1,然后为当前工作目录创建File 对象,利用该对象的list()方法得到一个包含该目录下所有文件和子目录名称的字符串数组,然后根据名称中是否含有文件名中特有的“”来区别目录和文件。最后,将得到的名称数组通过临时套接字发送到客户端。

想要建立FTP服务器,一开始的话建议使用软件来建立是最方便的。

FTP软件有很多种,有中文免费的,也有收费的。

1IIS7服务器管理可以批量管理ftp站点具有定时上传下载,定时更新的功能

最大可取之处在于它不仅可以管理ftp,同时也是vnc的客户端iis7服务器管理工具,是服务器批量管理集成器windows与linux都可以集成管理,可谓是非常方便

2CrossFTP for Mac(FTP客户端上传 工具)

具有CrossFTP Commander 本地站点传输和电子邮件通知功能

3ForkLift for Mac(文件管理器和FTP客户端)

弥补了许多文件管理软件管理单一的问题,还具有卸载,同步浏览等许多功

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » ftp指什么

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情