twisted network programming essentials 读书体会
来源:互联网 发布:linux创建用户组命令 编辑:程序博客网 时间:2024/05/15 05:57
首先twisted是在python结构下的一个事件驱动的网络框架。你可以在此基础上做出遵循各种协议的client--server结构的软件应用.
刚刚读了第一大章 An Intrduction to twisted主要有如下体会:
1) 所谓的事件驱动是指程序的运行是由外在的因素决定的,比如GUI程序依赖的是用户的鼠标操作,网络程序依赖的是client的送回来的消息,在twisted中事情的驱动体现在re-actor中,所谓re-actor本质就是一个处理事件的循环。
2) protocal和transports的分离,协议和数据的传输是分开来的,作者这样的思维是为了更好的拓展性。
3) factory设计模式在protocal中的应用,所有的协议都是由一个factory产生的,有些global的内容放到factory中比较合适,因为他可以保存protocal销毁后的内容。
4) 作者的整本书的流程就是从代码开始,然后解释代码,这样的流程比较容易让人接受很好。
5) telnel是个很好的debug的工具,用来模拟client各种的输入响应很适用。
6) defereds是为了让程序能异步执行的回调函数,他需要处理正常的和错误的情况,另外还要注意的是他可以有若干个处理组合成一个chain。
7) 整个库的使用结构非常的清晰明了,一看代码就能理解。
前面几点是库的基础的理解,下面是一个更加具体的web例子
8)HTTP GET协议格式如下,他是text based协议,所以比较有趣的是在telnet中输入如下文本同样可以触发网络server的响应
GET / HTTP/1.1
Host: www.google.com
9)下面是我见过的最简单的server,启动他,然后在浏览器敲 localhost:8000, 你会发现什么呢?
fromtwisted.protocolsimportbasic
fromtwisted.internetimportprotocol,reactor
classHTTPEchoProtocol(basic.LineReceiver):def__init__(self):
self.lines = []
deflineReceived(self,line):self.lines.append(line)ifnotline:
self.sendResponse()
defsendResponse(self):
self.sendLine("HTTP/1.1 200 OK")
self.sendLine("")
responseBody="You said:\r\n\r\n"+"\r\n".join(self.lines)self.transport.write(responseBody)self.transport.loseConnection()
classHTTPEchoFactory(protocol.ServerFactory):defbuildProtocol(self,addr):
returnHTTPEchoProtocol()reactor.listenTCP(8000,HTTPEchoFactory())
reactor.run()
- twisted network programming essentials 读书体会
- Twisted Network Programming Essentials
- Twisted.Network.Programming.Essentials2.1
- Beauty of Programming [Essentials]
- 读书体会
- NETWORK PROGRAMMING
- Network Programming
- 设计模式读书体会
- MFC 程序设计读书体会
- Essentials of Programming Languages - 2nd Edition
- Essentials of Programming Languages, 3rd Edition
- 体会Twisted的异步处理过程
- python twisted 核心架构 分析体会
- linux读书体会(一)
- linux读书体会(一)
- 软件项目管理读书体会
- 关于读书的一点体会
- An Introduction to Asynchronous Programming and Twisted
- Junit
- linux编程下signal()函数
- 基于v4l2的webcam应用, 本地预监
- win7专业版系统汉化
- 微信语聊流量消耗实测
- twisted network programming essentials 读书体会
- c#调用c++生成dll文件中的类方法
- 数据大小超出此类型的最大值
- jquery.cookie中的操作
- linux环境下给BOOST库编译静态库加上-fPIC选项
- 实验室第二周工作报告
- linux 常用(二)常用文件操作命令
- java通过JDBC访问Oracle的2个异常
- Oracle恢复数据 Tips