设为首页 收藏本站
查看: 2186|回复: 0

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

[复制链接]

尚未签到

发表于 2015-5-26 13:49:36 | 显示全部楼层 |阅读模式
前段时间完成的网络编程的大作业,附上源码,课程报告.
附件里面含有: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    改变服务器上的父目录
CWD     改变服务器上的工作目录
DELE    删除服务器上的指定文件
LIST    如果是文件名列出文件信息,如果是目录则列出文件列表
MODE    传输模式(S=流模式,B=块模式,C=压缩模式)
MKD    在服务器上建立指定目录
NLST  列出指定目录内容
NOOP   无动作,除了来自服务器上的承认
PASS    系统登录密码
PASV   请求服务器等待数据连接
PORT     IP 地址和两字节的端口 ID
PWD    显示当前工作目录
QUIT   从 FTP 服务器上退出登录
REIN   重新初始化登录状态连接
REST      由特定偏移量重启文件传递
RETR    从服务器上找回(复制)文件
RMD    在服务器上删除指定目录
RNFR    对旧路径重命名
RNTO    对新路径重命名
SMNT    挂载指定文件结构
STAT  在当前程序或目录上返回信息
STOR    储存(复制)文件到服务器上
STOU    储存文件到服务器名称上
STRU    数据结构(F=文件,R=记录,P=页面)
TYPE  数据类型(A=ASCII,E=EBCDIC,I=binary)
USER > 系统登录的用户名
这里着重介绍一下
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
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-70942-1-1.html 上篇帖子: 简单利用python暴力破解FTP密码 下篇帖子: 关于"cmd.exe ftp.exe的解决方法"
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表