文档库 最新最全的文档下载
当前位置:文档库 › 课设一个简单FTP服务器的实现

课设一个简单FTP服务器的实现

课设一个简单FTP服务器的实现
课设一个简单FTP服务器的实现

课程设计任务书

专业:计算机科学与技术学号:2153626 学生姓名(签名):

设计题目:一个简单FTP服务器的实现

一、设计实验条件

1208实验室

二、设计任务及要求

设计要求:任选一门自己熟悉的程序设计语言,利用Socket网络编程机制实现一个简单FTP服务器。

要求实现的功能包括:

上传、下载、选择数据传输模式,改变目录等,并给出相应的提示。

三、设计报告的内容

1.设计题目与设计任务

1.1设计题目

一个简单FTP服务器的实现。

1.2设计任务

任选一门自己熟悉的程序设计语言,利用Socket网络编程机制实现一个简单FTP服务器。要求实现的功能包括:上传、下载、选择数据传输模式,改变目录等,并给出相应的提示。

2.前言

2.1 FTP协议

Ftp服务是最常用的网络服务之一,虽然在www风行的今天,Ftp已经远不如以前使用得广泛,但是在许多大学等科研单位,Ftp仍然是最常用的文件交换方式。

FTP(File Transfer Protocol,文件传输协议)是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。Ftp协议是基于TCP协议的,因此,在一个Ftp会话开始前,客户

端和服务器必须首先建立一个 TCP连接,这个TCP连接通常被称作控制连接,客户端通过此连接向服务器发送FTP命令,服务器处理命令后,将返回一个响应码。

一个Ftp会话过程中,始终有一个控制连接,如果客户端请求文件,则会有一个数据连接,但FTP协议规定:只要关闭了控制连接,数据连接(如果有)也必须关闭。

2.2 Socket

Socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open–>读写write/read–>关闭close”模式来操作。Socket就是该模式的一个实现,Socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)。说白了Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

Socket是应用层与TCP/IP协议族通信的中间软件抽象层。

套接字API最初是作为UNIX操作系统的一部分而开发的,所以套接字API与系统的其他I/O设备集成在一起。特别是,当应用程序要为因特网通信而创建一

个套接字(socket)时,操作系统就返回一个小整数作为描述符(descriptor)来标识这个套接字。然后,应用程序以该描述符作为传递参数,通过调用函数来完成某种操作(例如通过网络传送数据或接收输入的数据)。

2.3 传输模式

FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。

ASCII传输模式:假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的是不同的操作系统,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。即ASCII模式下会转换文件,不能说是不同系统对回车换行解释不同,而是不同的系统有不同的行结束符。UNIX系统下行结束符是一个字节,即十六进制的0A,而Windows的系统是两个字节,即十六进制的0D0A,所以当你用ASCII方式从UNIX的FTP Server 下载文件到Windows系统上时(不管是二进制或者文本文件),每检测到一个字节是0A,就会自动插入一个0D,所以如果你的文件是二进制文件,比如可执行文件、压缩包什么的,就肯定不能用了。如果你的文件就是UNIX下的文本文件,你用ASCII 模式是正确的,要是误用了Binary模式,你在Windows上看这个文件是没有换行的,里面是一个个的黑方块。

二进制传输模式:在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh 以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢,也会损坏数据,使文件变得不能用。(在大多数计算机上,ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果你传输二进制文件,所有的位都是重要的。)如果你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。

2.4设计目的

21 世纪是网络的时代,是信息的时代,是多媒体的时代。Intertnet 技术的迅猛发展与普及,推动了世界范围的信息传输和信息交流。Internet 如此流行,其中FTP 功不可没。成千上万的数据、软件分布在世界各地,有了ftp,足不出户,就能轻而易举地得到想要的。FTP文件传送服务,主要用于存放大量的网络公用软件,常用工具盒技术文档,以及一些著名FTP服务的景象,现在,已经有许

多互联网站点都建立了可供大众访问的资料库,这些资料都可以被通过FTP 获取。建立匿名 FTP服务器,可以使用户有机会接触到世界上最大的信息库,这个信息库是日积月累起来的,并且还在不断增长,永不关闭,涉及到几乎所有主题。而且,这一切是免费的。Internet 之所以能延续到今天,是因为人们使用通过标准协议提供标准服务的程序。匿名FTP 是Internet 网上发布软件的常用方法。Internet 上的很多程序是由个人创造和维护的,他们通过匿名 FTP 把它们分发给世界各地的人们。也可以找到电子杂志、用户网讨论组的档案、技术文件等等。

2.5设计意义

互联网的一大特点是实现信息共享,其中文件传输是信息共享的十分重要的内容之一。FTP是实现文件传输服务的最主要的规范,并且当需要考虑到文件传输安全、传输质量、访问控制等诸多因素时,FTP服务器就成了解决文件传输问题的关键所在。在这种情形下,就需要有一个良好的FTP服务器平台来满足用户日益增长的服务需求。因此,研究FTP服务器相关技术及实现具有重要的意义。

3.设计主体

3.1系统简介

(1)常用命令

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

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

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

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

(4)发送操作,put命令用于传送文件到远程计算机。

(5)获取操作,get命令用于接收一个文件。

(2)工作原理

服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。

(3)常用函数

accept()函数

TCP服务器监听到客户端请求之后,就会调用accept()函数取接收请求,这样连接就建立好了。之后就可以开始网络I/O操作了,即类同于普通文件的读写I/O 操作。accept默认会阻塞进程,直到有一个客户连接建立后返回,它返回的是已连接socket描述字(一个连接套接字),它代表着一个网络已经存在的点点连接。

一个服务器通常通常仅仅只创建一个监听socket描述字,它在该服务器的生命周期内一直存在。内核为每个由服务器进程接受的客户连接创建了一个已连接socket描述字,当服务器完成了对某个客户的服务,相应的已连接socket描述字就被关闭。

read()、write()等函数

read函数是负责从fd中读取内容.当读成功时,read返回实际所读的字节数,如果返回的值是0表示已经读到文件的结束了,小于0表示出现了错误。如果错误为EINTR说明读是由中断引起的,如果是ECONNREST表示网络连接出了问题。

write函数将buf中的nbytes字节内容写入文件描述符fd,成功时返回写的字节数。失败时返回-1,并设置errno变量。在网络程序中,当我们向套接字文件描述符写时有俩种可能。1)write的返回值大于0,表示写了部分或者是全部的数据。2)返回的值小于0,此时出现了错误。我们要根据错误类型来处理。如果错误为EINTR表示在写的时候出现了中断错误。如果为EPIPE表示网络连接出现了问题(对方已经关闭了连接)。

close()函数

在服务器与客户端建立连接之后,会进行一些读写操作,完成了读写操作就要关闭相应的socket描述字,好比操作完打开的文件要调用fclose关闭打开的文件。close一个TCP socket的缺省行为时把该socket标记为以关闭,然后立即返回到调用进程,该描述字不能再由调用进程使用。

(4)Socket中TCP的建立(三次握手)

TCP协议通过三个报文段完成连接的建立,这个过程称为三次握手(three-way handshake),过程如下图所示。

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

?第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

一个完整的三次握手也就是:请求---应答---再次确认。

当客户端调用connect时,触发了连接请求,向服务器发送了SYN J包,这时connect进入阻塞状态;服务器监听到连接请求,即收到SYN J包,调用accept 函数接收请求向客户端发送SYN K ,ACK J+1,这时accept进入阻塞状态;客户端收到服务器的SYN K ,ACK J+1之后,这时connect返回,并对SYN K进行确认;服务器收到ACK K+1时,accept返回,至此三次握手完毕,连接建立。

3.2功能设计

3.2.1 基本部分

Client.java(客户端)

成员变量:

String cmd = "";// 从标准输入流接收字符串,放在cmd中

Socket s;//

BufferedReader br;// 传输数据

DataOutputStream dos;//数据输出流

DataInputStream dis;//数据输入流

client方法

public client(String serName) {

catalogue();

try {

boolean flag = true;

while (flag) {

s = new Socket(serName, 8888);

// 从标准IO中获得输入的命令

System.out.println("连接上!!");

br= new BufferedReader(new InputStreamReader(System.in));

// 将输入的命令放到BufferedReader类变量br中

cmd = br.readLine();// 将br的内容读出放到cmd中

// 发送命令

DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(s.getOutputStream()));// 向服务器发送相关命令,如

get,put,cd,dir

// 将字符集转换成字节序列

byte[] buf= cmd.getBytes();// 使用平台默认的字符集将此 String 解码为字节序列,并将结果存储到一个新的字节数组中。

// 返回:结果字节数组

dos.writeUTF(cmd);// 用UTF编码将一个字符串写入基础输入流,即写到服务端的输入流

dos.flush();// 清空此数据输出流

dos.close();// 关闭输出流

s.close();// 关闭socket

// 进行对于应得操作:

if (cmd.equals("get"))

get(serName);

else if (cmd.equals("put"))

put(serName);

else if (cmd.equals("cd"))

cd(serName);

else if (cmd.equals("dir"))

dir(serName);

else if (cmd == "quit")

flag = false;

}

} catch (UnknownHostException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

if (br != null) {

try {

br.close();

} catch (IOException e) {

e.printStackTrace();

}

}

if (s != null) {

try {

s.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

主函数:

public static void main(String[] args) {

new client("127.0.0.1")

}

Server.java(服务器端)

成员变量

ServerSocket ss = null;//服务器端socket对象

// 服务器套接字等待请求通过网络传入。它基于该请求执行某些操作,然后可能向请求者返回结果。

String dir = "";

String cmd = "";

DataOutputStream dos;// 数据输出流

String direcFile = "";

File rootDirectory;

String shareFile;

DataInputStream dis; // 数据输入流

ArrayList fileArrayList = new ArrayList();// 文件列表

private String shareFiledirectory; //共享文件目录字符串

Server方法

public server(String shareFiledirectory) {

this.shareFiledirectory = shareFiledirectory;

// 建立套接字

try {

ss = new ServerSocket(8888);//// 创建一个服务器端Socket,即ss,指定绑定的端口,并监听此端口

} catch (IOException e1) {

e1.printStackTrace();

}

try {

while (true) {

boolean flag = true;

while (flag) {

Socket s= ss.accept();// 阻塞式,等待客户端请求连接,即接受客户端请求

System.out.println("已有客户端连接");

dis = new DataInputStream(new

BufferedInputStream(s.getInputStream()));// BufferedInputStream,利用缓冲区来提高读效率,

// 从此套接字读取字节的输入流

// BufferedInputStream(InputStream in) 参数in指定需要被装饰的输入流

cmd = dis.readUTF();// 从dis输入流读取若干字节,把它转换为采用UTF-8字符编码的字符串,并将其放在cmd String变量里

// UTF-8对ASCII字符采用一个字节形式的编码,对非ASCII字符则采用两个或两个以上字节形式的编码

dis.close();// 关闭输入流

s.close();// 关闭socket

System.out.println("输出读入的字符串:" + cmd);

// 接受后放在cmd里用于判断:

if (cmd.equals("get"))//调用get方法

get();

else if (cmd.equals("put"))//调用put方法

put();

else if (cmd.equals("cd"))//调用cd方法

cd();

else if (cmd.equals("dir"))//调用dir方法

dir();

}

}

} catch (IOException e) {

}

}

主方法

public static void main(String[] args) {

System.out.println("等待连接");

new server("C:\\Users\\Thinkpad\\Desktop\\共享文件");// 此为shareFiledirectory,共享文件目录

}

3.2.2 显示目录

(1)算法描述

服务器端

1.调用initFileArrayList()方法,将目录下所有文件放在一个数组列表里面fileArrayList

2.从此套接字读取字节的输出流,并利用处理流进行封装

3.将数组列表中内容放入direcFile,再放入缓冲区中并输出

(2)代码实现

服务器端

public void dir() throws IOException {

rootDirectory= new File(shareFiledirectory);// shareFiledirectory 表示共享文件的路径

fileArrayList.clear();

initFileArrayList();

for (int i = 0; i < fileArrayList.size(); i++) {

//

System.out.println(fileArrayList.get(i).getAbsolutePath());

direcFile= direcFile+ fileArrayList.get(i).getAbsolutePath() + '\n';

}

try {

Socket s = ss.accept();

dos = new DataOutputStream(new

BufferedOutputStream(s.getOutputStream()));//输出文件列表

byte[] buf = direcFile.getBytes();

dos.write(buf);

dos.flush();

dos.close();

s.close();

} catch (IOException e) {

}

}

public void initFileArrayList() { // 将目录下所有文件放在一个数组列表里面fileArrayList

if (rootDirectory.isDirectory()) {

// 遍历目录下面的文件和子目录

File[] fileList = rootDirectory.listFiles();

System.out.println("文件个数:" + fileList.length);

for (int i = 0; i < fileList.length; i++) {

// 如果是文件,添加到文件列表中

if (fileList[i].isFile()) {

fileArrayList.add(new

File(fileList[i].getAbsolutePath()));

System.out.println(fileList[i].getAbsolutePath());

System.out.println("添加了" + fileList[i].getName());

}

// 否则递归遍历子目录

else if (fileList[i].isDirectory()) {

System.out.println("文件");

fileList[i].mkdir();//

rootDirectory = fileList[i];

initFileArrayList();

}

}

}

}

客户端

public void dir(String serName) {

System.out.println("以下是目录:");

try {

s = new Socket(serName, 8888);// 创建一个客户端Socket,指定绑定的端口,并监听此端口

dis = new DataInputStream(new

BufferedInputStream(s.getInputStream()));// 定义数据输入流

int BUFSIZE = 8912;

byte[] buf = new byte[BUFSIZE];

int data = 0;

while (data != -1) {// true) {

if (dis != null) {

data = dis.read(buf);// 遇到输入流的末尾,返回-1

String str = new String(buf);

System.out.println(str);

} // 读两次才执行跳出

}

} catch (IOException e) {

System.out.println("错了");

} finally {

try {

dis.close();

} catch (IOException e) {

e.printStackTrace();

}

try {

s.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

public void catalogue() {

System.out.println("--------------------------------------------");

System.out.println("1.dir 显示目录");

System.out.println("2.get 下载");

System.out.println("3.put 上传");

System.out.println("3.cd 改变目录");

System.out.println("--------------------------------------------"); }

(3)结果截图

3.2.3 改变目录

(1)算法描述

服务器端

1.创建套接字s,并接收客户端请求,即接收新的路径名

2.从此套接字读取字节的输入流,并利用处理流进行封装

3.将输入流的内容赋值给shareFiledirectory变量

4.调用dir方法

(2)代码实现

服务器端

public void cd() {

Socket s = null;

try {

// System.out.println("请输出新的路径:");

s = ss.accept();

// 读取要到达的改变的目录:

dis = new DataInputStream(new BufferedInputStream(s.getInputStream()));

shareFiledirectory = dis.readUTF();

System.out.println(shareFiledirectory);

dir();

} catch (IOException e) {

} finally {

}

}

客户端

public void cd(String serName) {

try {

Socket s = new Socket(serName, 8888);// 连接

System.out.println("请输出新的路径:");

br = new BufferedReader(new InputStreamReader(System.in));//

String changedDir = br.readLine();

// 发送命令

DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(s.getOutputStream()));

// byte []buf = changedDir.getBytes();

dos.writeUTF(changedDir);

dos.flush();

dos.close();

s.close();

dir(serName);

} catch (IOException e) {

}

}

(3)结果截图

3.2.4上传

(1)算法描述

服务器端

1.创建套接字s,并接收客户端请求,即接收文件名

2.从此套接字读取字节的输入流,并利用处理流进行封装

3.获取文件名称保存上传文件的路径名

4.在本地路径建一个数据输出流

5.从输入流将数据读到缓冲区中,并通过上面输出流写入文件

6.关闭文件输出流,关闭输入流,关闭套接字

(2)代码实现

服务器端

public void put() {//上传

// System.out.println("上传完成!");

// System.out.println("请输入要上传的文件路径和文件名称:");

Socket s = null;

try {

s = ss.accept();//接收客户端请求,即接收文件名

// 下载文件

dis = new DataInputStream(new

BufferedInputStream(s.getInputStream()));// 从客户端接收存放上传文件路径的输出流

int bufferSize = 8192;

// 缓冲区

byte[] buf = new byte[bufferSize];

int passedlen = 0;

long len = 0;

String savePath = "C:\\Users\\Thinkpad\\Desktop\\上传";

// 获取文件名称保存上传文件的路径名

savePath = savePath + File.separator + dis.readUTF();

// 在本地路径建一个数据流

DataOutputStream fileOut = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(savePath)));

// 获取文件长度

len = dis.readLong(); // 从输入流中读取8个字节

System.out.println("文件的长度为:" + len + " KB");

System.out.println("开始接收文件!");

// 获取文件

while (true) {

int read = 0;

if (dis != null) {

read = dis.read(buf); // 从输入流将数据读到缓冲区中,并将返回结果赋给read

}

passedlen += read;

if (read == -1) {

break;

}

System.out.println("文件接收了" + (passedlen * 100 / len) + "%");

fileOut.write(buf, 0, read);

}

System.out.println("接收完成,文件存为" + savePath);

fileOut.close();

dis.close();

s.close();

} catch (IOException e) {

}

}

客户端

public void put(String serName) {

System.out.println("请输入要上传的文件路径和文件名称:");

Socket s = null;

try {

s = new Socket(serName, 8888);

// 从标准输入流输入要传输的文件在本地的的路径:

br = new BufferedReader(new InputStreamReader(System.in));

String upFile = br.readLine();// 将该要上传的文件放到upFile

// 传输文件:

dos = new DataOutputStream(new

BufferedOutputStream(s.getOutputStream()));// 建立一个输出流对象

File file = new File(upFile);// 定义File对象upFile

dos.writeUTF(file.getName());// file.getname () 返回由此抽象路径名表示的文件或目录的名称。

// 写到输出流

dos.flush();// 清空输出流

dos.writeLong(file.length());// 向输出流写入一个long类型的数据

dos.flush();

dis = new DataInputStream(new BufferedInputStream(new FileInputStream(upFile)));

int BUFSIZE = 8192;

byte[] buf = new byte[BUFSIZE];

while (true) {

int read = 0;

if (dis != null) {

read = dis.read(buf);

} else {

System.out.println("no file founded!");

break;

}

if (read == -1) {

break;

}

dos.write(buf, 0, read);

}

dos.flush();

} catch (IOException e) {

} finally {

try {

dis.close();

dos.close();

s.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

(3)结果截图

3.2.5下载

(1)算法描述

服务器端

1.创建套接字s,并接收客户端请求,即接收对方的要求的文件名

2.从此套接字读取字节的输入流,并利用处理流进行封装,并读取作为filepath

3.在下载目录下创建该文件名的文件

4.从此套接字读取字节的输出流,利用处理流进行封装,并输出文件名字及文件长度

5.将文件封装到输入流中进行输入

6.客户端接收

7.关闭输入流、输出流、套接字

(2)代码实现

服务器端

public void get() {

System.out.println("下载文件!");

Socket s = null;// 连接为空

try {

s = ss.accept();// 接受客户请求,即接受对方的要求的文件名

//在创建 BufferedInputStream 时,会创建一个内部缓冲区数组。

dis = new DataInputStream(new

BufferedInputStream(s.getInputStream()));// 从此套接字读取字节的输入流,并利用处理流进行封装

String filePath = dis.readUTF();//filePath,要下载文件路径

System.out.println(filePath);

// 传输文件:

dos = new DataOutputStream(new

BufferedOutputStream(s.getOutputStream()));

//s.getInputStream() 返回此套接字的输入流。

//s.getOutputStream()返回此套接字的输出流

//BufferedInputStream,创建新的缓冲输出流

File file = new File(filePath);//在下载目录下创建该文件名的文件

dos.writeUTF(file.getName());//以utf-8格式输出文件名字

dos.flush(); //清空此数据输出流

dos.writeLong(file.length());//以8bite格式输出文件长度

dos.flush();

//读取文件路径

dis = new DataInputStream(new BufferedInputStream(new FileInputStream(filePath)));

//// 将文件封装到输入流中

int BUFSIZE = 8192;

byte[] buf = new byte[BUFSIZE];//每次发送的块大小

while (true) {

int read = 0;

if (dis != null) {

read = dis.read(buf);//从此输入流中将byte.length个字节的数据读入一个byte数组中

//返回读入缓冲区的总字节数,若已经到达流末尾,则返回-1

} else {//如果文件路径为空

System.out.println("no file founded!");

break;

}

if (read == -1) {

break;

}

dos.write(buf, 0, read);//将数组buf内写入输出流dos

}

dos.flush();

} catch (IOException e) {

} finally {

try {

dos.close();

dis.close();

s.close();

} catch (IOException e) {

}

}

}

客户端

public void get(String serName) {

// 下载

// System.out.println("get"+"54512");

System.out.println("请输入要下载的文件路径和文件名称::");

try {

Socket s = new Socket(serName, 8888);// 创建一个服务器端Socket,指定绑定的端口,并监听此端口

br= new BufferedReader(new InputStreamReader(System.in));// 建立连接:从标准输入中获得要下载的文件的路径放在br

String downFile = br.readLine();// 读取一个文本行。通过下列字符之一即可认为某行已终止:

// 换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。

// 返回:

// 包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null

// 发要下载的文件给服务器好让对方接收到要下载的文件的名字

dos = new DataOutputStream(new

BufferedOutputStream(s.getOutputStream()));

//从此套接字读取字节的输出流,并利用处理流进行封装

dos.writeUTF(downFile); //downFile,要下载的文件路径

dos.flush();

// 下载文件

dis = new DataInputStream(new

BufferedInputStream(s.getInputStream()));

//从此套接字读取字节的输入流,并利用处理流进行封装

//数据输入流

int bufferSize = 8192;

// 缓冲区

byte[] buf = new byte[bufferSize];

int passedlen = 0;

long len = 0;

String savePath = "C:\\Users\\Thinkpad\\Desktop\\我的文档";

// 获取文件名称路径加文件名

savePath = savePath + File.separator + dis.readUTF();

// 在本地路径建一个数据流

DataOutputStream fileOut = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(savePath)));

//将该文件封装到输出流中

// 获取文件长度

len = dis.readLong();

System.out.println("文件的长度为:" + len + " KB");

System.out.println("开始接收文件!");

// 获取文件

配置与管理Web和FTP服务器

实验项目名称:配置与管理Web和FTP服务器年月日 一、实验目的 (1)理解Web 服务器的工作原理。 (2)掌握IIS 信息服务器的安装。 (3)掌握Web 服务器的配置方法。 (4)理解FTP 服务器的工作原理。 (5)掌握FTP 服务器的配置方法。 二、实验原理及实验流程或装置示意图 安装IIS信息服务器,配置Web服务器,安装和配置FTP服务器 三、使用仪器、材料 (1)1 台装有Windows Server 2003 的计算机。 (2)多台装有Windows 操作系统的客户机。 (3)集线器1 个。 (4)直通双绞线若干。 四、实验步骤及注意事项与结果 1.安装IIS 信息服务器 请使用VMware Workstation 打开已安装好的Windows2003 虚拟机系统,一般情况下,Windows Server 2003 服务器的默认安装,没有安装IIS6.0 组件。因此,IIS6.0 需要另外单独安装。 安装方法如下: 第1 步:依次选择【开始】→【设置】→【控制面板】→【添加/删除程序】, 第2 步:在“添加/删除程序”对话框中选择【添加/删除Windows 组件】,就会弹出的“Windows 组件向导”对话框,如图所示。 第3 步:在Windows 组件向导对话框中选择“应用程序服务器”,单击【详细信息】,在其中选择“Internet 信息服务(IIS)”,单击【确定】,如图7-4 所示。

第4 步:回到图7-3“Windows 组件向导”对话框中,单击【下一步】。这时,需要在光驱中放入Windows Server 2003 的系统安装盘,如图7-5 所示。 第5 步:安装完毕后,依次选择【开始】→【设置】→【控制面板】→【管理工具】→【Internet 信息服务(IIS)管理器】,就会出现如图7-6 所示的“Internet 信息服务”对话框。

FTP服务器设置

最好是使用SERV-U, 或者就用系统自带的IIS中的那个。 若你的系统没有安装IIS,请在“控制面板”中的“添加或删除程序”中安装 IIS(“Internet 信息服务”) 在“控制面板”的“管理工具”中,启动IIS,并启动IIS上的FTP服务。在默认情况下,此时你的FTP服务器已经搭建好了,并且可以立即登录,但是该FTP中没有任何文件。右击IIS中的“默认FTP站点”节点,选择“属性”命令,打开相应的属性设置对话框。 点击“主目录”选项卡,在FTP站点目录的“本地路径”处填上你要设置的共享文件路径。默认情况下,此处的文件夹位置为“C :\Inetpub\Ftproot”,你如果临时想改变共享目录,随时都可在此处修改,以后别人登录你的FTP服务器时显示的文件列表就是在这个目录中。 在“主目录”的选项卡中,你还可设置FTP服务器的文件访问权限,分别有读取、写入和记录访问。安全起见,这里的写入权限一般不选,保证匿名用户不能随意对你文件进行操作。 设置登录的用户。如果你愿意提供“匿名”访问的权限,还需在“安全账户”选项中选择“允许匿名连接”选项。此外,你还可从Windows XP Professional的用户账号(控制面板→管理工具→计算机管理→本地用户和组)中选择FTP服务器的特殊账号,当然也可以自己设置用户名和密码。 在“消息”选项卡中,有“欢迎”、“退出”和“最大连接数”3个输入框,分别代表别人在登录、退出时FTP服务器给出的提示停息,你可以根据自己的需要设置。此处,最大连接数是设置同时连接本地FTP的最大主机台数。 在“FTP站点”选项卡中设置FTP标识,包括说明、IP地址和端口,在“描述”文本框中,把“默认FTP站点”改为你的FTP站点名称,其它的一般不需要改动,按照默认选项即可。 三、测试FTP服务器 FTP服务器架设好以后,我们可以在本地测试一下。可以采用两种方法登录到FTP服务器。

实验16 FTP服务器的配置(适用于Ubuntu)

实验16 FTP服务器的安装、配置与测试 实验目的: 1)了解FTP的基本原理和作用 2)掌握Linux下配置FTP服务器的方法, 3)掌握理解vsftpd.conf配置文件的各项基本含义 实验设备 计算机一台,Ubuntu Linux操作系统 实验内容 一、安装FTP 服务器 安装方法1: 通过源文件进行安装:sudo apt-get install vsftpd 如以上命令无法安装,则按照以下步骤进行手动安装 安装方法2: 1、从ftp下载vsftpd.deb 文件 2、在下载时直接用GDebi 软件包安装程序进行安装,也可以用以下命令在终端 窗口中进行安装 通过cd命令去到相应目录,然后用命令进行安装: sudo dpkg -i vsftpd.deb 3、安装后用以下命令查看,软件包中主要包含哪些文件 dpkg -L vsftpd 安装方法3: 1.把vsftpd- 2.2.2.tar.gz复制到Linux 2.用cd命令去到对应的目录 3.用命令:tar vsftpd-2.2.2.tar.gz 进行解压 4.用cd命令进入解压后的文件夹:vsftpd-2.2.2 5.执行编译命令: make 6.执行安装命令:make install 7.启动:/usr/local/sbin/vsftpd & 注意:以上操作要在root用户下或加sudo 二、配置FTP 服务器 配置文件所在路径:/etc/vsftpd.conf 1、备份原配置文件 sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak 2、只支持匿名下载 修改vsftpd.conf 文件(可用gedit或者vi命令,又或者鼠标双击),检查是否有“anonymous_enable=YES”,并用如下命令重启FTP 服务器sudo /etc/init.d/vsftpd restart

Windows2003建立FTP服务器

Windows2003建立FTP服务器 Windows2003 建立FTP服务器 windows 2003 Standard Edition、Windows 2003 Enterprise Edition、Windows XP Professional 、Windows 2000 Server、Windows 2000 Advanced Server 以及 Windows 2000 Professional 的默认安装都带有 IIS 。在系统的安装过程中IIS是默认不安装的,在系统安装完毕后可以通过添加删除程序加装IIS。 IIS 是微软推出的架设 WEB、FTP、SMTP 服务器的一套整合系统组件,捆绑在上列NT核心的服务器系统中。本文针对通过Windows2003 IIS组件配合花生壳动态域名解析软件向互联网提供FTP服务。第一步:安装Windows 2003 IIS中FTP 组件 在控制面板的添加/删除程序——Windows组件向导——应用程序服务器——Internet信息服务(IIS)中选中“文件传输协议(FTP)服务”。如下图: 在选定需要安装的服务后安装向导会提示需要插入Windows 2003安装光盘,这时您插入安装盘按照提示进行安装,IIS中的FTP很快便自动安装完成。 第二步:建立网络通讯部分,为所建立的FTP服务设置动态域名解析服务配置 1.下载花生壳动态域名解析软件并安装。

2.运行花生壳软件,点击“注册新护照”,根据弹出注册护照窗口提示进行注册。注册新护照完成后,使用 所注册的护照名称和密码填入花生壳软件中进行登陆

3.申请一个免费域名作为互联网访问FTP服务的“网址”登录oray网站[域名中心]—[注册域名]—[免费域 名]—[注册选定免费域名]即可。 4.根据提示激活上一步所申请的免费域名花生壳动态DNS服务

配置与管理FTP服务实验报告

网络服务器配置与管理实验报告 实验题目: 配置与管理FTP服务时间:2012/04/25 姓名: 于俊梅学号: 20101401322 班级: 10计3 协作者: ********************************************************************* 实验概述: 【实验原理】 FTP采用客户端/服务器模式工作,一个FTP服务器可同时为多个用户提供服务。它要求用户使用FTP客户端软件与FTP服务器连接,然后才能从FTP服务器上下载或上传文件。 FTP包含两个通道,一个控制通道,一个数据通道。 (1)控制通道 控制通道是FTP客户端和FTP服务器进行沟通的通道,连接FTP服务器、发送FTP命令,都是通过控制通道来完成的。 (2)数据通道 数据通道是FTP客户端与FTP服务器进行文件传输的通道。两种工作方式: ①PORT模式(主动方式):FTP客户端首先和FTP服务器的TCP21端口建立连接,通过这个通道发送命令,FTP客户端需要接收数据的时候在这个通道上发送PORT命令。 ②PASV模式(被动方式):在建立控制通道的时候与PORT模式类似,当客户端通过这个通道发送PASV命令的时候,FTP服务器打开一个位于1024和5000之间的随机端口并且通知FTP客户端在这个端口上进行数据传送。 【实验目的及要求】 (1)了解FTP的概念和工作原理 (2)安装FTP服务 (3)创建FTP站点并测试 (4)创建FTP站点的用户账号 (5)创建“隔离用户”FTP站点并测试 (6)配置和管理FTP站点 【实验环境】(使用的硬件设备、软件或平台) 硬件设备:个人PC机 软件:虚拟机 平台:Windows Server 2003系统与虚拟机之间构建的平台 ------------------------------------------------------------------------------------------------------- 实验内容: 【实验方案设计】 在VMware里安装1个Windows Server 2003操作系统,搭建FTP服务需求

FTP服务器安装和配置

实验四 实验名称:使用Server-U 组建FTP 服务器 实验目的:学会FTP 服务器的安装配置、管理和使用 实验内容:■ Server-U 的安装 ■ Server-U 的配置和管理 ■ 在客户端使用LeapFTP 进行上传下载 ■ 使用LeapFTP 往Web 站点上传网页和从Web 站点下载网页 实验步骤: 一、Server-U 的安装 1、安装Server-U 英文版 在Server-U 安装文件所在目录,执行安装文件(ServUSetup.exe),出现以下界面,根据屏幕提示直至安装完成(安装完成后,在系统托盘上,将出现Server-U 的小图标)。 2、Server-U 英文版的汉化 1)先结束Server-U 的守护进程 在系统托盘中Server-U 的小图标上按右键,选择退出 2)安装汉化包 执行汉化包目录下的汉化文件(注意不要装上网助手)。

3、Server-U的注册 1)先复制注册文件到Server-U的安装目录(可能为D:\Program files\Serv-U)2)执行该注册文件 二、Server-U的配置和管理 1、启动Server-U 依次但击 [开始菜单/Serv-U FTP Server/Tray Monitor], 执行后在系统托盘上,将出现Server-U的小图标 2、启动Server-U管理员程序 在系统托盘中Server-U的小图标上按右键,选择[启动管理员] 启动后可能会出现配置向导,单击[取消]按钮取消 3、新建域 新建一个名为JSJX的域(域IP地址不用指定,域名输入JSJX,其他默认值即可) 4、新建用户 新建匿名用户,用户名为:anonymous,没有密码,主目录可设为F:\FTPROOT 注意,匿名用户名必须为anonymous,匿名用户在登陆时不必输用户名和密码,匿 名一般只具有浏览和下载权限 新建一个名为ftpadmin的用户,密码与用户名相同,主目录也可设为F:\FTPROOT 此用户将来可给予较多的权限 说明:主目录也可根据需要设,但最好设为F:\FTPROOT,将来只要把其他目录映射为该目录下的虚拟目录即可。

ftp服务器环境搭建

红旗linux系统FTP环境搭建步骤 1、由于红旗Linux系统不自带vsftpd的rpm包,所以只能从网上下tar包进行编译安装, 此次安装版本为vsftpd-2.3.2。 2、使用SSH软件将vsftpd-2.3.2.tar.gz包上传到服务器中。 3、安装VSFTPD ●将vsftpd-2.3.2.tar.gz复制到/usr目录下并解压缩 #cp vsftpd-2.3.2.tar.gz /usr/ #tar –xzvf vsftpd-2.3.2.tar.gz #cd vsftpd-2.3.2 #make ●此时产生一个二进制文件,验证一下: #ls –l vsftpd -rwxr-xr-x 1 root root 99572 5月9 10:50 vsftpd 检查vsftpd权限,可给与775权限,若权限不够可进行配置更改,如下: # chmod 775 vsftpd -rwxrwxr-x 1 root root 99572 5月9 10:50 vsftpd ●满足vsftpd安装所需要的一些条件 Vsftpd默认设置需要一个“nobody”用户,如果这个用户不存在需要创建: # useradd nobody useradd: user nobody exists; vsftpd默认设置需要一个空目录,/usr/share/empty,如果该目录不存在需要创建: # mkdir /usr/share/empty/ mkdir: 无法创建目录…/usr/share/empty/?: 文件已存在; 创建一个“ftp”用户(如果该用户不存在的话),/var/ftp就是FTP的根目录,也可以换成其他目录。 # useradd -d /var/ftp ftp useradd: user ftp exists # chown root.root /var/ftp/ # chmod og-w /var/ftp/

FTP服务器搭建步骤

一共三部分: -----------------------------------------------------第一部分-------------------------------------------------------------- 打开”FTP服务器”文件夹的,打开之后会自动隐藏到下面的位置: ,双击该图标,会出现下面的窗口, 然后,继续,点“设置”里的“用户”,如下图: 会出现下面的窗口,把“用户列表”里的用户全部删掉,新建用户‘BFFTP’,密码’DHHZDHHZ’,具体设置如下,设置好以后,保存退出。

这步可有可无,最好设置一下,如下图:

------------------------------------------------------第二部分-------------------------------------------------------------- 下面这个是后台更新程序的配置(BFDOWNLOAD.EXE),可以看到配置是和FTP是没有任何关系的,和登录程序的配置一样。 -----------------------------------------------------第三部分-------------------------------------------------------------- 在后台登录程序文件夹里有下面这个程序,这个程序的意义是改各个用户的密码: 双击之后,登录名必须是BFAPP8,密码是DHHZDHHZ,选择好“系统”,可别改错了

可以看到,连SUPER的密码都可以更改,这个先不管它,主要是看最后一条,BFFTP@192.168.1.63 这个”BFFTP”是和第一部分中的用户’BFFTP’对应的,“192.168.1.63 ”则是FTP所在的机器的IP,DHHZDHHZ也是和第一部分的用户密码“DHHZDHHZ”对应的,设置好,点“执行”就好了。

Windows Server 2016部署FTP服务器

Windows Server 2016部署FTP服务器

目录 一、前期准备工作 (3) 1、硬件需求 (3) 2、软件需求 (3) 二、基本环境设置 (3) 1、账号密码的相关设置 (3) 2、禁用Ctrl+Alt+Del (5) 3、设置关机原因 (6) 4、关闭上网安全提示 (6) 三、搭建FTP环境 (7) 1、设置防火墙 (7) 2、新建入站规则 (8) 3、安装FTP服务 (11) 4、添加FTP站点 (16) 5、设置主动模式 (19) 四、创建用户、组,设置权限 (20) 1、创建用户 (20) 2、创建组 (20) 3、添加用户 (21) 4、从User组中删除用户 (22) 5、设置用户权限 (24) ⑴在站点下设置FTP授权规则 (24)

⑵对文件夹设置访问权限 (27) 6、设置公共文件夹 (29) 五、远程登陆 (30) 1、设置远程登陆 (30) 2、远程登陆注意事项 (31) 六、查看日志 (32) 1、启用审核策略 (32) 2、查看历史开关机 (32) 3、查看用户登录 (33) 4、查看文件操作记录 (35) ⑴对所要监控的文件进行设置 (35) ⑵查看操作记录 (36) 七、其他相关设置 (37) 1、固定IP地址 (37) ⑴查看电脑IP地址 (37) ⑵设置成固定IP (38) 2、添加计算机备用账户 (41) 3、账户密码的修改 (42) ⑴管理员密码的修改 (42) ⑵用户密码的修改 (42)

一、前期准备工作 1、硬件需求 服务器一台或电脑一台 硬件最低配置:1.4GHz 64位处理器,系统盘至少32G(为了能够保证顺利安装,建议至少40G)。 2、软件需求 Windows Server 2016系统,安装系统时建议安装桌面体验版,本电脑安装的是Windows Server 2016数据中心(桌面体验版)。如果未安装桌面体验版,后期各种操作就只能用命令操作,操作复杂,费时费力。 二、基本环境设置 打开“运行”或快捷键“Window键+R”,输入gpedit.msc 回车,进入组策略设置。 1、账号密码的相关设置 密码要求: ⑴长度6位以上 ⑵包含三种及以上字符类型,如字母大写、小写、数字和特殊字符

FTP服务器的配置与维护

实训 FTP服务器的配置与维护 一、实训目的: 1. 理解文件传输协议的工作原理; 2. 掌握在Windows Server 系统中利用IIS和Serv-U架设FTP站点。 3. 掌握如何在FTP站点中实现上传和下载。 二、实训设备: 1. FTP服务器:运行Windows Server 操作系统的PC机一台; 2. 上网计算机,若干台,运行Windows XP操作系统; 3. 每台计算机都和校园网相连。 图1 FTP服务器配置实训环境 三、实训任务: 任务1:利用IIS6组建FTP站点; 任务2:创建用户隔离的基于IIS的FTP站点; 任务3:利用Serv-U组建FTP站点。 四、实训步骤: 任务配置要求: 1、任务1:利用IIS6组建FTP站点 (1)服务器端: 在一台安装Windows Server 的计算机(IP地址为192.168.25.X(X为机器号),子网掩码为255.255.255.0,网关为211.81.192.1;)上设置1个FTP站点,端口为21,FTP站点标识为“FTP站点训练”;连接限制为100000个,连接超时120s;日志采用W3C扩展日志文件格式,新日志时间间隔为每天;启用带宽限制,最大网络使用1024 KB/s;主目录为D:\ ftpserver,允许用户读取和下载文件访问。允许匿名访问(Anonymous),匿名用户登录后进入的将是D:\ftpserver目录;虚拟目录为D:\ftpxuni,允许用户浏览和下载。 (2)客户端: 在IE浏览器的地址栏中输入ftp://192.168.25.X(X为机器号)来访问刚才创建的FTP站点。 配合实训DNS服务器的配置,将IP地址192.168. 25.X(X为机器号)与域名ftp://https://www.wendangku.net/doc/443860341.html, 对应起来,在IE浏览器的地址栏中输入ftp://https://www.wendangku.net/doc/443860341.html,来访问刚才创建的FTP站点。 2. 任务2:创建用户隔离的基于IIS的FTP站点 创建用户user1和user2,在IIS6中创建基于FTP用户隔离的FTP站点 3. 任务3:利用Serv-U组建FTP站点(学有余力的同学完成) FTP地址是192.168.11.250,本机计算机名为xxzx-chujl,在D盘建立了ftpserver文件夹,并在此文件夹下创建了anon、Wlzx、Xxzx、pub四个文件夹,在ftpserver文件夹下创建两个文本文件,名称分别为“登录消息.txt”和“用户注销.txt”。允许匿名访问(Anonymous),匿名用户登录后进入的将是D:\ftpserver/anon目录;创建用户chujl和liuyf,其中chujl的文件夹为d:/ftpserver/wlzx,liuyf 的用户文件夹为d:/ftpserver/xxzx。文件夹pub可以让所有的用户访问。

FTP服务器的基本配置

实验八:Ftp服务器配置 实验目的: 1.掌握FTP服务器的架设 2.掌握FTP服务器的基本设置 实验内容: 1.架设FTP服务 2.配置FTP服务器 实验方法: FTP(File Transfer Protocol)即文件传输协议是用来在两台计算机之间传输文件的TCP/IP通信协议。两台计算机一台称为FTP服务器,一台称为客户端。客户端可以从服务器下载文件,也可以上传文件到FTP服务器。 Windows Server 2003的FTP服务集成在IIS(Internet Information Services)服务中。采用默认安装IIS服务并不会安装FTP服务。 一、FTP服务器的安装与测试并在域环境下配制ftp服务器实现上传、下载和非匿名访问 (一)FTP服务的安装 1.选择“开始”→“控制面板”→“添加或删除程序”→“添加/删除 Windows组件”,选取“应用程序服务器”后,单击“详细信息”按钮。 2.选择“Internet 信息服务(IIS)”后,单击“详细信息”按钮。 3.选择对话框中的“文件传输协议(FTP)服务后,单击“确定”按钮回 到前一画面。然后依次单击“确定”按钮和“下一步”按钮直至“完成” 按钮。 安装完成后,可以用“IIS管理器”来管理FTP服务器,打开方式为“开始”→“管理工具”→“Internet信息服务(IIS)管理器”。展开“FTP站点”时,可以看到下面有一个“默认FTP站点”。 (二)FTP服务器的测试 用两种方式可以测试FTP站点是否工作正常。一是在命令行用ftp.exe程序,一是用IE浏览器。下面分别介绍。 ?用ftp.exe程序测试。在测试主机启动命令行程序,然后输入ftp 服务器 的IP地址,如:ftp 172.16.145.142。如果服务器有域名也可以通过“ftp 主机域名”来访问。当提示输入用户名时,可以用匿名账户来访问,即 输入anonymous,提示输入密码时随便输入一个电子邮件帐号如 abc@https://www.wendangku.net/doc/443860341.html,(需要有@)即可。断开连接输入bye。 ?用IE浏览器测试。在浏览器的地址栏输入“ftp://IP地址/”或“ftp://域 名/”。系统会自动用匿名账户来连接FTP服务器的默认站点。由于目前 默认站点内还没有文件,所以界面中看不到任何文件。 ?如果无法连接FTP服务器,请通过IIS管理器检查默认FTP站点的状态 是否为“正在运行”。如果处于停止状态,则可以右击“默认站点”选 择“启动”来开启FTP服务。 如果测试主机有其他FTP客户端程序如FlashFXP,CuteFTP等,也可以用这些程序来测试。 二、FTP服务器的基本配置 (一)主目录与列表样式

如何建立一个FTP服务器

如何建立一个FTP服务器(SERV-U使用教程)在网上做过软件下载的人都知道,建立一个FTP下载服务器相对比较简单,一般用WIN2000下自带的IIS就可以,但IIS在功能上好多都不尽人如意,下面我就介绍一款功能非常强大,但使用简单的FTP服务器构建软件-Serv-U FTP Server,让我们也来体验一下自己DIY FTP服务器的快乐!在说明使用之前,让我先大致介绍一下Serv-U(本文中提到的Serv-U版本为3.0.0.17,使用笔者所做的汉化程序):Serv-U 是一个可以运行于Windows 95/98/2000/ME 和Windows NT 4.0下的FTP服务器程序有了它,你的个人电脑就可以模拟为一个FTP服务器,也就是说,你所连接的网络中的计算机用户可以访问你的个人电脑,通过FTP协议(文件传输协议)复制、移动、删除你的电脑中的文件或文件夹,可以做一切权限所允许的事情。FTP协议规定了计算机之间的标准通讯方式,使所有不同类型,不同操作系统,不同格式的电脑之间得以互换文件。它可以用最简单的方式创建用户帐号,并且在硬盘空间上划分一定的区域用以存放文件,让用户以各种FTP客户端软件(如CuteFTP、WS_FTP等)上传或下载所需要的文件。有许多FTP服务器和客户端软件可用于不同的系统中,Serv-U是用于运行MS-Windows 并且已安装了WinSock 版本1.1 兼容TCP/IP 协议的个人电脑中的,这几乎包括了所有的Windows操作系统。Serv-U由两大部分组成,引擎和用户界面。Serv-U引擎(ServUDaemon.exe)其实是一个常驻后台的程序,也是Serv-U整个软件的心脏部分,它负责处理来自各种FTP客户端软件的FTP命令,也是负责执行各种文件传送的软件。在运行Serv-U引擎也就是ServUDaemon.exe文件后,我们看不到任何的用户界面,它只是在后台运行,通常我们无法影响它,但在ServUAdmin.exe中我们可以停止和开始它。Serv-U引擎可以在任何Windows 平台下作为一个本地系统服务来运行,系统服务随操作系统的启动而开始运行,而后我们就可以运行用户界面程序了。在Win NT/2000系统中,Serv-U会自动安装为一个系统服务,但在Win 9x/Me 中,你需要在“服务器”面板中选择“自动开始”,才能让它转为系统服务。Serv-U用户界面(ServUAdmin.exe)也就是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、在这儿要你输入你的域名如果你有的话,如:https://www.wendangku.net/doc/443860341.html,,没有的话,就随便填一个;6、“下

Linux全攻略--FTP服务器配置与管理

Linux全攻略--FTP服务器配置与管理 版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。 FTP的全称是File Transfer Protocol(文件传输协议),就是专门用来传输文件的协议.它工作在OS I模型的第七层,即是应用层,使用TCP传输而不是UDP.这样FTP客户端和服务器建立连接前就要经过一个"三次握手"的过程.FTP服务还有一个非常重要的特点是它可以独立于平台. LINUX下实现FTP服务的软件很多,最常见的有vsftpd,Wu-ftpd和Proftp等.Red Hat Enterpri se Linux中默认安装的是vsftpd. 通常,访问FTP服务器时需要经过验证,只有经过了FTP服务器的相关验证,用户才能访问和传输文件. vsftpd提供了3种ftp登录形式: (1)anonymous(匿名帐号) 使用anonymous是应用广泛的一种FTP服务器.如果用户在FTP服务器上没有帐号,那么用户可以以a nonymous为用户名,以自己的电子邮件地址为密码进行登录.当匿名用户登录FTP服务器后,其登录目录为匿名FTP服务器的根目录/var/ftp.为了减轻FTP服务器的负载,一般情况下,应关闭匿名帐号的上传功能. (2)real(真实帐号) real也称为本地帐号,就是以真实的用户名和密码进行登录,但前提条件是用户在FTP服务器上拥有自己的帐号.用真实帐号登录后,其登录的目录为用户自己的目录,该目录在系统建立帐号时系统就自动创建. (3)guest(虚拟帐号) 如果用户在FTP服务器上拥有帐号,但此帐号只能用于文件传输服务,那么该帐号就是guest,guest是真实帐号的一种形式,它们的不同之处在于,geust登录FTP服务器后,不能访问除宿主目录以外的内容. 下面就对其详细介绍. 一.安装与启动vsftpd 先使用命令查看是否安装. 可看到安装了版本为2.0.1.如果没有安装可在桌面上选择"应用程序"/"系统设置"添加/删除应用程序"命令.来安装FTP软件包. 安装和配置好vsftpd软件包后,需要启动FTP服务器才能使用.启动方法有以下两种: 1.使用图形化方式启动,选择"应用程序"/系统设置/服务器设置/服务.可看到vsftpd,打上勾,开始启动. 2.在终端窗口用命令进行启动.

FTP服务器的权限设置

FTP服务器的权限设置 2010-03-30 23:41:42| 分类:住网成峰(网络) | 标签:无|字号大中小订阅 在桌面上右击“我的电脑”,执行“管理”命令,在“计算机管理”窗口的左窗格中依次展开“系统工具”→“本地用户和组”目录,单击选中“用户”选项。在右侧窗格中单击右键,执行“新用户”命令。在打开的“新用户”对话框中填写用户名(如xpzx),并设定密码。然后取消“用户下次登录时需更改密码”复选框,并勾选“用户不能更改密码”和“密码永不过期”复选框,单击“创建”按钮完成该用户的添加。重复这一过程添加其他用户,最后单击“关闭”按钮即可。 为方便对这些用户的管理,最好将他们放入一个专门的组中。例如我们可以创建一个“FTP”组:在“计算机管理”窗口的目录树中单击选中“组”选项,然后在右侧窗格中单击右键,执行“新建组”命令,并将该组命名为“FTP”。接着依次单击“添加”→“高级”→“立即查找”按钮,将刚才创建的用户全部添加进来,最后依次单击“创建”→“结束”按钮。 然而事情并没有完,因为上述创建的用户默认隶属于“Users”组,也就是说他们拥有对大部分资源的浏览权限。为了实现对特定资源的有效管理,需要将这些用户从“Users”组中删除。在“计算机管理”窗口的右侧

窗格中双击“Users”选项,用鼠标拖选所有刚添加的用户并单击“删除”按钮即可。 设置独立权限 这里的权限设置需要分两部分来进行,即对FTP服务器主目录的权限设置和对各个用户文件夹的权限设置。假设FTP服务器的主目录路径为“F:/FTP”,我们先来取消“FTP”组的用户对“FTP”文件夹的“写入”权限。右击“FTP”文件夹,执行“属性”命令。在打开的“FTP 属性”对话框中切换至“安全”选项卡下,然后依次单击“添加”→“高级”→“立即查找”按钮,单击选中“FTP”组并依次单击“确定”按钮回到“FTP 属性”对话框。接着在“FTP的权限”列表框中勾选“拒绝写入”复选框。为了使“拒绝写入”权限仅对“FTP”文件夹有效,还需要单击“高级”按钮,在“FTP的高级安全设置”对话框中双击“权限列表”中的“拒绝FTP写入”选项,打开“FTP的权限设置”对话框。在“应用到”下拉列表中选中“只有该文件夹”选项,连续单击“确定”按钮完成设置(如图1)。 接着我们为每个用户创建独立的文件夹(以用户名命名),并针对每个文件夹赋予相应用户适当的权限。以文件夹“xpzx”为例,在“xpzx 属性”对话框的“安全”选项卡下将用户“xpzx”添加进来,并赋予其读取和写入的权限。同理,对于其他文件夹,也只赋予相应用户读取和写入的权限。 需权限保护的文件夹必须在NTFS分区中创建,FAT32分区内的资源无法设置权限。

FTP服务器搭建和配置

南华大学 计算机科学与技术学院 实验报告 (2013~2014学年度第1学期) 课程名称网络操作系统 题目FTP服务器搭建和配置姓名XXX 学号XXXX 专业网络工程班级网络1班 8栋实验室教师XXX 地 点

目录 一、实验目的及要求 (2) 二、实验软硬件环境 (3) 三、实验内容 (4) 1.1匿名用户ftp服务器上文件的下载和上传及其配置 (4) 1、查看当前系统是否安装了VSFtpd,命令如下: (5) 2、启动VSFtpd: (5) 3、配置网络接口,包括ip和子网掩码,并增加一个默认网关 (5) 4、关闭防火墙: (6) 5、测试链接 (6) 5、从外登录服务器 (7) 6、建立并下载文件(这里是蓝色的字原来底色看不清换了颜色) (7) 7、上传文件 (7) 1.2本地用户ftp服务器上文件的下载和上传及其配置 (9) 1、ftpusers(用户黑名单) (10) 2、user_list(用户白名单) (10) 3、本地用户登录并实现上传下载 (11) 4、新增一个本地用户并实现登录、上传、下载 (12) 5、配置欢迎信息 (13) 6、其他配置 (14) 7、本地用户的上传和下载 (14) 1.3VSFtpd的虚拟账号配置,实现匿名用户登录和文件的上传下载15 1、检查是否安装了PAM和db4 (15) 2、创建虚拟口令库文件 (16) 3、生成PAM认证文件 (16) 4、创建一个用户 (17) 5、登录: (18) 四、总结分析 (18) 1.4问题: (18) 1.5解决 (19) 一、实验目的及要求 熟练掌握ftp的搭建,上传及下载文件。了解ftp的基本操作,并能进行熟练的配置。

FTP服务器配置实验报告

F T P服务器配置实验报 告 Company Document number:WUUT-WUUY-WBBGB-BWYTT-1982GT

实验报告 课程:计算机网络实验 实验名称: FTP服务器配置与管理 系别 : 电子信息工程系 实验日期 : 专业班级 : 03通信师 组别 : 第10组 实验报告日期 : 姓名 : 学号 : (40) (41) 报告退发 : ( 订正、重做 ) 第1页共 12 页 FTP服务器配置与管理 一.题目: FTP服务器配置与管理 二.环境: Sever2000 三.试验目的 1.掌握FTP服务的基本概念与工作原理 2.懂得安装FTP服务器的过程 3.配置与管理FTP服务器 四.试验内容及步骤 1.的安装,具体步骤如下: (1)运行“控制面板”中的“添加或删除程序”,点击“添加/ 删除Windows组件”按钮。 第 2 页共 12页 (2)在出现组件安装向导中,选择“Internet信息服务 (IIS)”,单击“下一步”开始安装,单击“完成”结 束。 第 3 页共 12 页 系统自动安装组件,完成安装后,系统在“开始”/“程序”/“管理工具”程序组中会添加一项“Internet服务管理器”,此时服务器的WWW、FTP等服务会自动启动。 2.设置FTP站点 第 4 页共 12 页 (1)使用IIS默认站点

①将制作好的主页文件(html文件)复制到 \Inetpub\ftproot目录,该目录是安装程序为默认FTP站点 预设的发布目录。 ②将主页文件的名称改为。IIS默认要打开的主页文件是 或,而不是一般常用的。 完成这两个步骤后,打开本机或客户机浏览器,在地址栏 中输入FTP服务器的 IP地址()或主机的FQDN名字(前 提是DNS服务器中有该主机的记录),就会以匿名的方式 登录到FTP服务器,根据权限的设置就可以进行文件的上 传和下载了。 (2)添加新的FTP站点 ①打开“Internet信息服务窗口”,鼠标右键单击要创建 新站点的计算机,在弹出菜单中选择“新建”/“FTP站 点”,出现“FTP站点创建向导”,单击“下一步”继 续。 第 5 页共 12 页 ②输入FTP站点说明,单击下一步 第 6 页共 12 页 ③ 单击下一步 ④指定FTP输入主目录的路径(如选择新建文件夹),单击下一步 第 7 页共 12 页 ⑤设置访问权限为读取和写入,并单击下一步,完成FTP站点创建向导 第 8 页共 12 页 站点的管理 (1)本地管理 通过“开始”/“程序”/“管理工具”/“Internet服务管理 器”,打开如图9-1的“Internet信息服务”窗口,在要管 理的FTP站点上单击鼠标右键,选择“属性”命令,出现如下 图所示对话框。 第 9 页共 12 页 ①“FTP站点”属性页 IP地址:设置此站点的IP地址,即本服务器的IP地址。 如果服务器设置了两个以上的IP站点,可以任选一个。FTP 站点可以与Web站点共用IP地址以及DNS名称,但不能设置 使用相同的TCP端口。 TCP端口:FTP服务器默认使用TCP协议的21端口,(若端口号21以被配置,则需更改此端口,用户在连接到此站点时,

FTP服务器的配置与管理

FTP服务器的配置与管理

————————————————————————————————作者:————————————————————————————————日期:

计算机科学与技术系 实验报告 专业名称计算机科学与技术 课程名称计算机网络及应用 项目名称 FTP服务器的配置与管理 班级 学号 姓名 同组人员无 实验日期 2014年11月18日

一、实验目的与要求: 目的: 1)了解FTP的基本概念和原理 2)熟悉FTP协议 3)掌握常见FTP服务器的构建方法和管理 要求: 1)基于IIS构建FTP服务器 2)对FTP服务器进行测试 相关知识点: 1)FTP基本概念 FTP是File Transfer Protocol的缩写,即文件传输协议。FTP是互联网上的另一项主要服务,该项服务的名字是由该服务使用的协议引申而来的,各类文件存放于FTP服务器,可以通过FTP客户程序连接FTP服务器,然后利用FTP协议进行文件的“下载”或“上传”。 2)FTP的工作原理 FTP是TCP/IP的一种具体应用,它工作在OSI模型的第七层、TCP模型的第四层(应用层)上,使用TCP传输而不是UDP,FTP客户在和服务器建立连接之前就要经过一个“三次握手”的过程,其目的在于客户与服务器之间的连接是可靠的,而且是面向连接的,为数据的传输提供了可靠的保证。 二、实验内容 1、实验环境:基于IIS构建FTP服务器。 (1)安装IIS的过程与实验一安装IIS过程类似。须确保“Internet 信息服务的子组件”列表中选中“文件传输协议(FTP)服务”。 (2)打开“开始”——>“控制面板”——>“管理工具”——> “Internet信息服务”,打开IIS控制台。

FTP服务器建立、管理和使用

FTP服务器建立、管理和使用 一、实训目的: 1.让学生掌握FTP服务的知识 2.掌握FTP站点的规划 3.掌握FTP站点的设置和使用。 二、任务描述: 在DNS中将域名“https://www.wendangku.net/doc/443860341.html,”指向IP地址“192.168.0.49”,要求输入相应格式的域名(或IP地址)就可登录到“D:\Myweb”目录下使用FTP相关服务。 三、相关理论: IIS是Internet信息服务(Internet Infomation Server)的缩写。主要包括WWW服务器、FTP服务器等。它使得在Intranet(局域网)或Internet(因特网)上发布信息成了一件很容易的事。 正如WWW服务的实现依赖于TCP/IP协议组中的HTTP应用层协议一样,FTP服务同样依赖于TCP/IP协议组应用层中的FTP协议来实现。FTP的默认TCP端口号是21,由于FTP可以同时使用两个TCP端口进行传送(一个用于数据传送,一个用于指令信息传送),所以FTP可以实现更快的文件传输速度。使用FTP需要专门的客户端软件,例如著名的BulletFTP、LeapFTP等等,一般的浏览器(如IE)也可以实现有限的FTP客户端功能,如下载文件等。如下图,就是在IE浏览器中打开的一个FTP站点。 FTP服务器的Internet地址(URL)与通常在Web网站中使用的URL略有不同,其协议部分需要写成"ftp://"而不是"http://",例如,由Microsoft创建并提供大量技术支持文件的匿名FTP服务器地址为ftp://https://www.wendangku.net/doc/443860341.html,。 四、实训环境 1.实训设备: 服务器1台,客户机1台,交换机1台,网线2条。 2.拓朴结构图: 五、实训内容

FTP服务器配置说明_2010.11.17(完整版)

FTP服务器配置说明 使用版本:Fedora 12 修订日期:2010年11月

目录 前言 (3) 1.FTP服务器的安装和配置 (4) 1.1 实验拓扑 (4) 1.2 安装vsftpd (4) 1.3 配置FTP服务器 (5) 2.FTP服务器的验证 (8) 2.1 在Linux下验证FTP服务器 (8) 2.1.1 从FTP server上下载文件 (8) 2.1.2 向FTP server上传文件,并创建文件夹 (10) 2.2 在XP下验证FTP服务器 (15) 2.2.1 从FTP server上下载文件 (15) 2.2.2 向FTP server上传文件,并创建文件夹 (17)

前言 FTP(File Transfer Protocol)是互联网上典型的文件传输协议,用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。 本次实验介绍vsftp的安装和配置。vsftp是一个基于GPL发布的类Unix 系统上使用的FTP服务器软件,它的全称是very secure ftp的缩写。顾名思义,这是一个比较安全的FTP服务器软件。实际上它提供的一些机制确实在一定程度上提高了安全性,例如程序权限、chroot软件的使用等。

相关文档