使用c++实现一个FTP客户端(一)

来源:互联网 发布:阿里云备案订单找不到 编辑:程序博客网 时间:2024/06/05 19:48

之前使用c++实现了一个FTP客户端,在这里做一些记录。

  一、需要注意的几点

    ①FTP是一种文件传输协议,基于TCP,所以客户端与服务器建立的连接是可靠、安全的,并且要经过三次握手的过程。

    ②FTP传输数据默认采用二进制模式,即将文件内容转换为二进制表示后再传送,而若HTML等文本文件传输时需要转换成ASCII模式。

    ③FTP客户端在连接服务器时需要用到两个端口,其中一个端口(默认为21)用作控制连接端口,负责发送命令和等待响应;另一个端口用作数据传输,用来建立数据传输通道,端口号为20或其他可用端口号。

    ④FTP有两种连接模式:主动模式与被动模式。主动模式命令为PORT,此模式下客户端需要向服务器提供一个IP地址和端口号,由服务器来连接客户端的指定端口;被动模式命令为PASV,此模式下由服务器向客户端提供IP地址与端口号,由此解决主动模式下服务

器到客户端的数据端口的连接被防火墙过滤掉的问题。

    ⑤FTP的工作流程为:客户端连接服务器->服务器连接成功返回->客户端发送初始化命令->服务器响应命令成功返回->客户端发送用户验证消息->服务器返回验证结果->验证通过,客户端进行数据操作->服务器响应客户端操作命令->客户端发送关闭连接命令-

>服务器响应关闭连接命令。

    ⑥通常FTP服务器只负责进行数据连接,在客户端发送命令要求关闭连接时,服务器才会关闭连接。但在以下情况服务器也会关闭数据连接:

       1.服务器发送数据结束,通过EOF文件结束标志终止传送。

       2.客户端发送ABORT命令。

       3.客户端改变了端口号。

       4.控制连接通道被关闭。

       5.传输过程中发生严重错误。

    ⑦FTP命令与响应码:

命令 描述 ABOR中断数据连接程序ACCT <account>系统特权帐号ALLO <bytes> 为服务器上的文件存储器分配字节APPE <filename>添加文件到服务器同名文件CDUP <dir path>改变服务器上的父目录CWD <dir path>改变服务器上的工作目录DELE <filename>删除服务器上的指定文件HELP <command>返回指定命令信息LIST <name>如果是文件名列出文件信息,如果是目录则列出文件列表MODE <mode>传输模式(S=流模式,B=块模式,C=压缩模式)MKD <directory>在服务器上建立指定目录NLST <directory>列出指定目录内容NOOP无动作,除了来自服务器上的承认PASS <password>系统登录密码PASV请求服务器等待数据连接PORT <address>IP 地址和两字节的端口 IDPWD显示当前工作目录QUIT从 FTP 服务器上退出登录REIN重新初始化登录状态连接REST <offset>由特定偏移量重启文件传递RETR <filename>从服务器上找回(复制)文件RMD <directory>在服务器上删除指定目录RNFR <old path>对旧路径重命名RNTO <new path>对新路径重命名SITE <params>由服务器提供的站点特殊参数SMNT <pathname>挂载指定文件结构STAT <directory>在当前程序或目录上返回信息STOR <filename>储存(复制)文件到服务器上STOU <filename>储存文件到服务器名称上STRU <type>数据结构(F=文件,R=记录,P=页面)SYST返回服务器使用的操作系统TYPE <data type>数据类型(A=ASCII,E=EBCDIC,I=binary)USER <username>>系统登录的用户名

 

响应代码 解释说明 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文件名不允许
原创粉丝点击