FTP Client的实现

来源:互联网 发布:淘宝怎么找代销 编辑:程序博客网 时间:2024/05/12 09:37

最近在搞FTP文件传输,以前完全没接触过,所以刚开始弄都不知道怎么着手,其实说白了FTP就是一个TCP的文件传输。

FTP是基于TCP的传输协议,所以它的本质就是TCP连接,你可以随便找一个TCP工具,下一个FTP的服务器,就能连接上,我自己实现的客户端,过程如下:

1. 建立TCP连接,FTP服务器端口是固定的21

2. 登录FTP服务器,user admin,如果这里是自己实现FTP客户端,admin后面有换行的,即实际上应该写入user admin\r\n ,然后是pass 123456,所有写入的命令都要加换行符。

3. 设置Type ,type i

4. 获取数据连接端口号,pasv,返回的命令形式为0227 Entering Passive Mode (192,168,0,21,4,5),即端口号为4*256+5

5. 建立数据连接,新建立一个pasv返回端口的连接,用作数据传输的通道。

6. 在命令的连接里面输入 stor filename 上传文件,关闭数据连接,则表示上传完成。


命令如下:

命令描述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>>系统登录的用户名

标准 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文件名不允许
0 0