现在的位置: 首页 > 综合 > 正文

c#实现的一个简单的FTP客户端

2013年07月19日 ⁄ 综合 ⁄ 共 2549字 ⁄ 字号 评论关闭

前段时间完成的网络编程的大作业,附上源码,课程报告.
附件里面含有:ftpclient源代码,一个简易的FTP服务器,用于测试,课程报告.
网络编程大作业报告

一.设计题目:基于Socket类的C# FTP客户端

二.设计目的:

了解通过FTP协议传送文件的方法,学会使用C#的Socket类实现一个简单的FTP客户端.随着计算机网络的完善和成熟人们通过FTP下载资源也普遍增加,特别是对于局域网用户,FTP服务器大大方便了同学们共享资源.

三、        设计内容

1.FTP协议简介

 FTP协议(File Transfer Protocol)即远程文件传输协议,是一个用于简化IP网络上系统之间文件传送的协议,FTP是TCP/IP的一种具体应用,它工作在OSI模型的第 7层,TCP模型的第四层上,即应用层,使用TCP传输而不是UDP,FTP建立的就是一个可靠的连接。采用FTP协议可使 Internet用户高效地从网上的FTP服务器下载大信息量的数据文件,将远程主机上的文件拷贝到自己的计算机上。以达到资源共享和传递信息的目的。由于FTP的使用使得Internet上出现大量为用户提供的下载服。Internet成为了一个巨型的软件仓库。将使用两条单独的TCP连接,一条专用于发送FTP命令,称为控制连接,另一条则专用于传递数据,
称为数据连接。

1)控制连接

客户端希望与FTP服务器建立上传下载的数据传输时,它首先向服务器的TCP 21端口发起一个建立连接的请求,FTP服务器接受来自客户端的请求,完成连接的建立过程,这样的连接就称为FTP控制连接。

2)数据连接

FTP控制连接建立之后,即可开始传输文件,传输文件的连接称为FTP数据连接。FTP数据连接就是FTP传输数据的过程,它有两种传输模式

PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。(这是大多数ftp客户端的传输模式)

PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。

主要用到的FTP命令:

命令   描述

ABOR   中断数据连接程序

CDUP <dir path>   改变服务器上的父目录

CWD <dir path>    改变服务器上的工作目录

DELE <filename>   删除服务器上的指定文件

LIST <name>   如果是文件名列出文件信息,如果是目录则列出文件列表

MODE <mode>   传输模式(S=流模式,B=块模式,C=压缩模式)

MKD <directory>   在服务器上建立指定目录

NLST <directory> 列出指定目录内容

NOOP   无动作,除了来自服务器上的承认

PASS <password>   系统登录密码

PASV   请求服务器等待数据连接

PORT <address>    IP 地址和两字节的端口 ID

PWD    显示当前工作目录

QUIT   从 FTP 服务器上退出登录

REIN   重新初始化登录状态连接

REST <offset>     由特定偏移量重启文件传递

RETR <filename>   从服务器上找回(复制)文件

RMD <directory>   在服务器上删除指定目录

RNFR <old path>   对旧路径重命名

RNTO <new path>   对新路径重命名

SMNT <pathname>   挂载指定文件结构

STAT <directory> 在当前程序或目录上返回信息

STOR <filename>   储存(复制)文件到服务器上

STOU <filename>   储存文件到服务器名称上

STRU <type>   数据结构(F=文件,R=记录,P=页面)

TYPE <data type> 数据类型(A=ASCII,E=EBCDIC,I=binary)

USER <username>> 系统登录的用户名

这里着重介绍一下

FTP 响 应 码

响应代码   解释说明

110    新文件指示器上的重启标记

120    服务器准备就绪的时间(分钟数)

125    打开数据连接,开始传输

150    打开连接

200    成功

202    命令没有执行

211    系统状态回复

212    目录状态回复

213    文件状态回复

214    帮助信息回复

215    系统类型回复

220    服务就绪

221    退出网络

225    打开数据连接

226    结束数据连接

227    进入被动模式(IP 地址、ID 端口)

230    登录因特网

250    文件行为完成

257    路径名建立

 

响应代码   解释说明

331    要求密码

332    要求帐号

350    文件行为暂停

421    服务关闭

425    无法打开数据连接

426    结束连接

450    文件不可用

451    遇到本地错误

452    磁盘空间不足

500    无效命令

501    错误参数

502    命令没有执行

503    错误指令序列

504    无效命令参数

530    未登录网络

532    存储文件需要帐号

550    文件不可用

551    不知道的页类型

552    超过存储分配

553    文件名不允许

 

2.设计说明

 System.Net.Sockets命名空间提供了对TCP(传输控制协议)的支持,通过TCP协议可以与指定IP地址的主机建立连接以交换数据。控制连接socket传送的为ftp相应的命令,数据传送的socket传输的是该命令返回的所有数据.包含文件列表或者文件数据.再通过相应的解析,即可实现一个简易的FTP客户端. FTPClient的基础部分是在网上找的,但是该程序功能有重大缺陷,通过我的添加/删除/修改,再加了一个ftpStrPrase类存放目录/文件信息.
附件下载:http://imzc.net/show-94-1.html

抱歉!评论已关闭.