之前使用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 地址和两字节的端口 ID
PWD 显示当前工作目录
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客户端(一)相关推荐

  1. Winform中实现FTP客户端并定时扫描指定路径下文件上传到FTP服务端然后删除文件

    场景 Windows10上怎样开启FTP服务: Windows10上怎样开启FTP服务_BADAO_LIUMANG_QIZHI的博客-CSDN博客 上面在Windows上搭建FTP服务器之后,会接收客 ...

  2. 利用CUTFTP Tranfer Engine开发.NET FTP客户端

    为了解决大文件上传的问题,我曾经也用过XMLHTTP分块,但是感觉还是不够好. 利用FTP的话就会方便服务器文件的管理. 首先安装一个CUTFTP软件,安装好以后,安装的文件夹中会有一个ftpte.e ...

  3. 使用FTP(IOS FTP客户端开发教程)

    本文翻译自新近Wrox出版社出版的,由Peter van de Put所著的<Professional.iOS.Programming>.该书题材比较新颖,结构合理,是一本不错的IOS开发 ...

  4. 计算机网络ftp客户端实验,计算机网络实验报告FTP客户端.doc

    计算机网络实验报告FTP客户端 <计算机网络> 实验报告 班级:IS1202 学号:U201214739 姓名:黎星 华中科技大学计算机学院 二零一四年十一月 目录 实验一:网络组建与实施 ...

  5. 基于Java实现的一个FTP服务

    资源下载地址:https://download.csdn.net/download/sheziqiong/85706472 资源下载地址:https://download.csdn.net/downl ...

  6. Golang实现一个简单的FTP客户端

    使用Golang语言实现的一个简单的FTP客户端:Github源码:Golang实现一个简单的FTP客户端

  7. 网络编程--ftp客户端的实现(c#版)

    .net2.0对ftp有了一个很好的封装,但是确容易让人忽略ftp的真正内部实现,下面是我实现的ftp客户端的功能,其主要步骤是这样的: 1.创建一个FtpWebRequest对象,指向ftp服务器的 ...

  8. 安装ftp连接linux服务器配置,Linux下FTP安装及配置(VSFTPD服务器安装配置、FTP客户端安装配置)...

    安装说明 安装环境:CentOS-6.3 安装方式:yum安装.rpm源码安装 软件:ftp-0.17-51.1.el6.x86_64.rpm 下载地址:http://pan.baidu.com/s/ ...

  9. 18. 编写FTP客户端程序

    在实际应用中可能经常访问FTP服务器来上传或下载文件,Python也可以替我们做这些. [示例 1]下面请看一个例子(ftpclient). 运行的结果如下: FTP客户端程序的编写还可以参照官方文档 ...

  10. windows ftp服务器_ftp客户端软件,推荐6个流行的FTP客户端软件

    无论你是做网站工作,还是运行一个家庭FTP服务器,或者你只是喜欢高速下载,一个稳定且功能齐全的FTP客户端工具都可以节省你大量时间和生命,现在有大量的免费或者收费的FTP客户端软件供大家选择,这里总结 ...

最新文章

  1. intellij idea 生成可执行jar 运行提示没有主清单属性
  2. 利用InfoPath实现SharePoint Server 2013列表的级联选择(Cascading Drop Down List)
  3. datalength,求字符串的字节数
  4. 安卓学习 之 网络技术(十)
  5. C#8.0可空引用类型的使用注意要点 1
  6. vue3 编译很慢_Vue 项目编译时间过长问题
  7. 2021最新Java高频面试题,很适合大厂面试
  8. Ubuntu下的QQ-For-Linux 安装
  9. Pyside2 Qlabel如何快速添加click鼠标单击事件(新手上路,勿喷!)
  10. 只知道wxid怎么添加好友
  11. 【雕爷学编程】Arduino动手做(43)---单路继电器模块
  12. Android调用系统应用打开各种类型文件
  13. Windows 11和Windows 2022 TLS/SSL(Schannel SSP)的加密套件
  14. oracle 按旬统计并且每月小计 行转列 PIVOT函数 与分组小计 ROLLUP 函数
  15. 爬取沪江网考研词汇并按要求存为txt
  16. Matlab版本对应CUDA
  17. vue 显示日期只显示年月_vue获取年月日
  18. 安超云生态 | 安超云与硅格半导体完成产品兼容互认证 携手打造协同生态
  19. 2021-07-14 串口 、并口、接口划分(UART、RS232、RS422、RS485、TTL、USB)
  20. 正则化-最通俗的解释

热门文章

  1. SPSS的下载和使用经历
  2. gps高斯utm_UTM投影分带计算与高斯投影分带计算
  3. FeHelper ( 浏览器插件 )
  4. Music-Downloader:功能强大的音乐下载器
  5. 微信小程序订阅消息 微信公众号模板消息
  6. 全开源-微信小程序(附开源地址)
  7. php包含大马执行,分析一个常见的php大马并且解码过程
  8. 三维GIS+电力巡检,开启电缆通道数字化巡检新局面
  9. ENSP教程---配置DHCP
  10. 在ArcGIS使用Modelbuilder创建拓扑检查模型