zoukankan      html  css  js  c++  java
  • 用python编写一个合格的ftp程序,思路是怎样的?

     

    经验
    1.一般在比较正规的类中的构造函数。都会有一个verify_args函数,用于验证传入参数。尤其是对于系统传参。
    2.并且系统传参,其实后面大概都是一个函数名
    例如:python server.py start #start就是server.py里面一个函数,一般在一个类里面
    3. 所以verify_args就要用反射判断

    if hasattr(server,'start'):
      start = getattr(server,'start')

    4.对比在构造函数里面,直接self.start()写死的做法。这个方法的优点是,可以调用不止于start,可以调用类似help,restrart等。具有强大的可扩展性。即能升能缩
    5.根据这个思路,可以在类里面添加help方法,系统传参,python server.py help
    6. 在条件判断语句中,要注意一下判断(父子类)顺序,同级情况下,应该由子类先来


    技巧
    1) 思考思路时,先保证‘前提’可以实现,不要本末倒置。
    2)边写边测试,验证逻辑是否成功,即使服务器端也是一样,初步定义一个可以反馈结果的客户端进行连接。可以善用print进行占位,目的是显示逻辑供以认证
    3)编码时:先写逻辑,先占位
    4) 若可以有明确的分组,例如一前一后(处理发送,接收处理),最好分函数编写
    5)若存在交互,一定要保证对应好,需要一步一步验证。没编写甲方的一步,就要编写乙方的一步,然后测试交互。
    6) 切忌不要复杂化,一定要简单化,简单化!!!不到万不得以时不要把问题复杂化。


    重零到一
    一.起步阶段
    1)创建好所有文件夹
    2)首先进入的事配置文件,配置好IP_PORT
    3) modules文件夹内创建main.py,里面创建LogicHandler类。先pass
    4)进入bin,创建入口。入口处创建逻辑类对象
    二.主逻辑设计阶段
    逻辑设计。由于没有要交互的对象,所以说此类是披着面向对象的面相过程。使用面向过程思想设计
    从服务器端的视角出发
    1)输入help参数,显示帮助信息
    2)输入start参数,启动服务器
    3)启动成功后,若有客户端链接上来,接受链接并进入验证阶段,收到客户端的账号密码
    4)读取db下的user.cfg文件进行验证,发送验证失败的通知码和成功提示
    5)若成功,保存用户名,保存用户家目录路径,进入命令交互阶段。
    6)编写命令交互函数,收到的是以各种函数名开头的命令,使用反射对命令进行分发。
    7)依次编写各类函数
    8)被分发函数初步定义的是start(),真正地负责启动整个服务器,由于需要用到并发,需要socketserver,所以
    要在modlues创建一个ServerHandler.py ,定义ServerHandler类。还是一样,先pass,测试逻辑

    三、进入ServerHandler类
    1)由于指定要覆写handle函数,所以进入handle函数。先价格while True的循环接收
    2)设计出协议头,{'action':'auth','username':'ziyi','password':'123'},也就是第一次接受到的1024字节就是这个json字符串,可以用''' ‘’‘ 字符串在函数中加以注释

    编写client,因为需要通信测试功能
    1)还是verify_args,因为涉及到系统传递ip和端口。返回ip_port用于链接
    2)定义make_connection用于接收ip_port参数链接服务器。注意 self.sock在这里初始化最好

    四、编写服务器的交互函数。
    编写客户端交互函数
    1)想要的情况是 c=ClientHandler()
    c.interactive()
    2)客户端交互函数第一步就是调用认证功能

    五、编写客户端认证功能
    1)分两个函数authenticate,get_auth_result,前者获得input输入,后者获得服务器反馈。
    2)服务器收到客户端的加工报文后,先打印出来
    边写边验证:先不要急着处理先print打印出来是不是和设想的一样。不这样做后面出问题就浪费很多时间。

    六、回到客户端交互函数继续完善。
    1)构想是借由input函数获得输入,加工后分发到类的其他函数。
    2)首先是upload函数,文件上传函数

    七、编写客户端文件上传函数。
    1)产生json字符串,action键指定为‘upload',先编写发送部分,接收部分待服务器验收之后编写
    2)然后编写服务器对应的上传服务函数。

  • 相关阅读:
    BZOJ 1037: [ZJOI2008]生日聚会Party 四维DP
    Codeforces Round #240 (Div. 1) B. Mashmokh and ACM DP
    Codeforces Round #319 (Div. 2)B. Modulo Sum DP
    浅谈移动端页面无刷新跳转问题的解决方案
    2017年10大主流编程语言最新排行榜出炉
    2017年10大主流编程语言最新排行榜出炉
    验证码倒计时的注册页面
    仿百度地图上拉下滑抽屉盒
    仿百度地图上拉下滑抽屉盒
    微信小游戏跳一跳外挂教程(安卓版)
  • 原文地址:https://www.cnblogs.com/ziyide/p/9097536.html
Copyright © 2011-2022 走看看