经验

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)然后编写服务器对应的上传服务函数。

python如何开发一个程序思路_用python编写一个合格的ftp程序,思路是怎样的?相关推荐

  1. python能开发安卓app吗_如何Python写一个安卓APP

    前言:用Python写安卓APP肯定不是最好的选择,但是肯定是一个很偷懒的选择,而且实在不想学习Java,再者,就编程而言已经会的就Python与Golang(注:Python,Golang水平都一般 ...

  2. python可以开发桌面应用软件吗_用Python可以开发出桌面软件吗?

    网友解答: 这个可以肯定的说,是可以的.python作为一门胶水型语言,涉及的面众多,包含大量第三方库,功能强大,要是连一个桌面软件都不能开发,怎么说的过去,下面我主要说一下几个常用的开发GUI程序的 ...

  3. 乐高机器人java程序代码_用JAVA编写一个乐高机器人躲避障碍物运动到目标点的程序....

    写出一个可以控制机器人的小程序,使机器人从一边到一个相对面,并至少跨越一个障碍物.规则如下:1,障碍物必须设置在机器人行走的路线上.2,空间的基本配置如插图3,不能用轨道之类的东西... 写出一个可以 ...

  4. python软件开发电子产品测试方向_基于Python语言的自动测试系统通用软件平台实现...

    期 No.5 2019 年 3 月 Mar. 2019 收稿日期: 2018-05-06 稿件编号: 201805027 基金项目: 中国电科第十研究所发展基金 ( SSJ-1784 ) 作者简介: ...

  5. [转载] Python Web开发—进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程

    参考链接: 在Python中创建代理Web服务器 2 Python Web开发-进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程 [课程简介] 这是一门Python We ...

  6. python中怎样使用re模块_[转]Python中RE模块的应用

    Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 Emecs 风格的模式.Emacs 风格模式可读性稍差 ...

  7. 多态部分作业 1.按要求编写Java程序:(1)编写一个接口:InterfaceA,只含有一个方法int method(int n);

    1.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现int m ...

  8. [基础题] 6.(*)按如下要求编写Java程序: (1)编写一个接口:OneToN,只含有一个方法int dispose(int n)

    package HomeWork_10;public class Test_06 { /*6.(*)按如下要求编写Java程序: (1)编写一个接口:OneToN,只含有一个方法int dispose ...

  9. [基础题] 5.(*)按如下要求编写Java应用程序:(1)编写一个用于表示战斗能力的接口Fightable,

    /*5.(*)按如下要求编写Java应用程序: (1)编写一个用于表示战斗能力的接口Fightable, 该接口包含:整型常量MAX: 方法void win(),用于描述战斗者获胜后的行为: 方法in ...

  10. 按要求编写一个Java应用程序:(1)编写一个矩形类Rect,包含:两个属性...2、定义一个接口Shape,包括计算图形面积(getArea)和周长(getcir)...

    1.按要求编写一个Java应用程序: (1)编写一个矩形类Rect,包含:两个属性:矩形的宽width和高height:一个带有两个参数的构造方法,用于将width和height属性初化:两个方法:求 ...

最新文章

  1. 查看 php-cgi 进程数
  2. android webview重绘,Android-怎么判断android中WebView滑动到了低端
  3. 3Com发布新MSR路由器 为企业提供视频播客支持
  4. 线段分割法实现微信抢红包
  5. Java写入Excel文件
  6. wordpress 调整段落空两,段落间的距离
  7. linux单用户模式修复磁盘,在单用户模式下使用fsck命令修复受损的Mac硬盘
  8. securecrtp32位_SecureCRT 32位下载
  9. c#ftp操作全解:创建删除目录,上传下载文件,删除移动文件,文件改名,文件目录查询
  10. 视频教程_Mastercam2017车削视频教程,数控车床编程视频教程,vericut车床仿真视频...
  11. linux github安装 Pytorch
  12. ios弱网测试_弱网测试方法整理
  13. 英特尔首席工程师吴甘沙:一切弯路都是直路
  14. 远程计算机ip记录怎么删除吗,远程桌面连接清除登陆过的IP地址
  15. java 实现 excel 函数_Excel函数在Java中的实现 Finv
  16. 科研工作者要会的技能----查找顶刊会议或期刊的方法
  17. 栅格那点儿事(一)---Raster是个啥子东西
  18. 读书笔记: Cartesian Impedance Control of Redundant and Flexible-Joint Robots, Section 1
  19. 2022-2028年中国代餐轻食市场投资分析及前景预测报告
  20. python 统计文本字数 生成词云图

热门文章

  1. 【BZOJ 3669】 [Noi2014]魔法森林 LCT维护动态最小生成树
  2. 第一百零六节,JavaScript变量作用域及内存
  3. SQL Server用户权限详解
  4. [Oracle整理]树形查询(start with connect by)
  5. Unsatisfied forward or external declaration 错误分析
  6. 思维导图软件列表(mind mapping software list)
  7. Async注解使用及源码分析
  8. spring源码-第七个后置处理器的使用
  9. Java主线程等待所有子线程执行完毕再执行解决办法集
  10. 应用程序框架实战四:你需要应用程序框架吗