您的位置:首页 > 博客中心 > 互联网 >

命令行版本的FTP客户端展示(实现细节和遇到的问题在github仓库中,因为有很多内容)

时间:2022-05-11 04:50

1.FTP相关知识介绍(声明一下我是Win10版本):

  FTP协议是一个文件传输的协议,它是客户端服务器的架构,它可以做两台PC之间传输任意大小的文件。

2.使用的可行性:

  如果想自己使用(Filezilla比我这强)或是测试我这个程序,您需要在网络上先搭建一个FTP服务器站点(https://www.cnblogs.com/popfisher/p/7992036.html这个帖子的建站方法实测过可行),这步的目的是在网络里公开你的IP(或是域名),方便FTP客户端的连接;或者您知道一个已经建立好的FTP服务器的IP(或是域名->IP)。

  根据那个帖子搭建的站点是非匿名登录的。而我很也是写匿名登录的内容,该版本的客户端只限用注册好的FTP账户名和密码登录(该账户就是Win系统里就是你开机时的用户名和密码)的情况。后续的GUI会改进这里。 

3.关于FTP服务器站点:

  里面其实有很多东西,FTP站点的目的之前说了,但是它的搭建在Win系统里是可以按那个帖子的步骤做好,也可以是写个程序来实现,但是它涉及到了FTP服务器和客户端连接的内容,比如两种连接模式“主动”“被动”等。

  还有它的权限的限制的设置,也是搭建的一个重点,可以像帖子里的那种非匿名,也可以完全开放的匿名(这是FTP最早应用的目的:以匿名方式去下载公共文件)

  它的搭建结果是把你本地PC的一个文件夹路径给到公开的网络。那个路径作为这个服务器的根路径。客户端可以遍历它底下的子路径。

4.我的代码:

  https://github.com/z472/Cwarehouse/blob/master/因特网客户端基于底层协议编程/ftpclient1.py

  里面每个函数开头都有一行注释,关键或是出错过的行也有注释。

  因为github仓库下面也提交了我遇到和解决的问题的文档,加上比较充足的注释,故以下部分将不重点谈实现的细节。

   (1)使用时的问题:

  代码网址如上所示,如果想自己使用的话还要把里面的全局变量 r_path (它是你本地下载文件的保存时的路径)请您手动更改下。

  代码里面还有一个用来上传文件的默认路径,在上传文件给服务器的时候,你可以每次都输入一个本地路径,或是摁回车跳过使用您自己设置的默认路径。

  代码如果停止操作几分钟,再输入指令会报错,告诉你连接中断,重做就可以。

   (2)指令:

     技术图片

  Instructions:-D(download) -Q(quit) -U(Uploading) -R(Reset path)
  -D:输入之后可以得到,服务器的当前路径所有文件信息,然后下载可以输入文件的后缀来批量下载,或是回车默认把全部东西下载下来。

    技术图片
          图片展示的是下载exe后缀的文件。
    技术图片
  -Q:好像没什么用,关闭退出的功能  -R:定位服务器根目录中的子路径,之后的下载都从这里进行
  -U:上传文件,按提示先把你要上传文件的上级路径给出,或是回车使用默认路径,然后按提示把要上传的文件后缀输入  
    技术图片
      图片展示的是前几行是上传功能,下面的-D是显示下目录中新上传好的2个多GB的电影文件。
  对上传的说明:因为可能有人会上传病毒文件给服务器,该功能不常使用,下面也没有详细地实现它的显示进度和它的历史记录保存功能。
  当输入错误格式的字符时会要求重来一遍。
(3)特别的功能:
  下载时文件进度显示:它显示的是已经下载的字节数。每0.05s显示一次。实测发现对于30MB的文件有一点显示。
            对于几百MB(图上的pycharm的exe是790MB显示了11行),但2~3GB的文件会显示非常多行。
  历史记录保存:该程序记录每次下载的文件的记录。
    技术图片
      图片显示:它保存了下载的文件名,文件接收的路径和时间。
(4)需改进的地方:
  界面部分:
    GUI版本,正是因为很多地方要适应GUI,要改一些输出语句,才写的这个随笔来记录命令行版本。
  登录部分:
    要增加录的匿名部分
    增加一个上次登录的书签(保存上次使用的账户名和密码),由于要注意信息的安全性,所以一直没搞出来。
  进一步地减少耦合。
    

 

本类排行

今日推荐

热门手游