使用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文件名不允许
- 使用c++实现一个FTP客户端(一)
- 使用c++实现一个FTP客户端(二)
- 使用c++实现一个FTP客户端(三)
- 一个ftp客户端的实现
- 使用 Socket 通信实现 FTP 客户端程序(一)
- C#使用socket实现FTP、POP3、SMTP的客户端 (一)
- C语言实现ftp客户端
- linux C 实现FTP客户端
- 使用C语言socket实现windows pc与ftp服务器通信---socket实现ftp客户端
- 一个简单的FTP客户端 实现上传下载
- Java实现一个简单的FTP客户端
- 用PHP实现一个FTP客户端
- FTP 下载客户端 C语言实现
- 使用 Socket 通信实现 FTP 客户端程序
- 使用 Socket 通信实现 FTP 客户端程序
- 使用 Socket 通信实现 FTP 客户端程序
- 使用 Socket 通信实现 FTP 客户端程序
- 使用 Socket 通信实现 FTP 客户端程序
- 【青岛】12月16日.NETCore与AI技术交流会-等你来哦!!
- VS Tools for AI全攻略(2)低配置虚拟机也能玩转深度学习,无需NC/NV系列
- Asp.NET Core2.0 项目实战入门视频课程_完整版
- unsolved problem
- Axis2 报错 Faulty Services
- 使用c++实现一个FTP客户端(一)
- 第十讲 Java中的工具类之Arrays
- pytorch 可视化初探
- [Office] 设置制表符格式
- 使用c++实现一个FTP客户端(二)
- 线程--初始化效果
- 使用c++实现一个FTP客户端(三)
- 阿里云双十二优惠5折服务器域名优惠汇总
- pygame库写游戏——入门<2> 游戏中的关键——事件