python网络编程 之 twisted

wisted 是一个完全事件驱动的网络框架。 它允许你使用和开发完全异步的网络应用程序和协议。 在写本书的时候,它还不是 Python 标准库的一部分,要使用它,你必需另外下载并安装它(在本章 最后能找到链接)。它为你创建一个完整系统提供了很大的帮助。系统中可以有:网络协议,线程, 安全和认证,聊天/即时通讯,数据库管理,关系数据库集成,网页/互联网,电子邮件,命令行参 数,图形界面集成等。

使用 Twisted Internet 类的时间戳 TCP 服务器--客户端

 1 #encoding=utf-8
 2  #Twisted Reactor Timestamp TCP 客户端
 3 from twisted.internet import protocol,reactor
 4 
 5 host = 'localhost'
 6 port = 21567
 7 
 8 class TSCIntProtocol(protocol.Protocol):
 9     # 重写函数 connectionMade()和 dataReceived()。
10     # 新加一个自己的函数 sendData(),用于在需要发送数据时调用
11     def sendData(self):
12         data = raw_input('>')
13         if data:
14             print 'sending %s ' %data
15             self.transport.write(data)
16         else:
17             self.transport.loseConnection()
18 
19     def connectionMade(self):
20         self.sendData()
21 
22     def dataReceived(self,data):
23         print data
24         self.sendData()
25 
26 class TSCIntFactory(protocol.ClientFactory):
27     protocol = TSCIntProtocol
28     clientConnectionLost = clientConnectionFailed = 
29     lambda self,connector,reason:reactor.stop()
30 
31 reactor.connectTCP(host,port,TSCIntFactory())
32 reactor.run()


 1 #encoding=utf-8
 2 from twisted.internet import protocol,reactor
 3 from time import ctime
 4 
 5 port = 21567
 6 
 7 class TSServProtocol(protocol.Protocol):
 8     #重写 connectionMade()函数,这个函数在有客户连接的时候被调用
 9     def connectionMade(self):
10         clnt = self.clnt = self.transport.getPeer().host
11         print 'connected from',clnt
12 
13     #dataReceived()函数,这个函数在客户通过网络发送数据过来时被调用。
14     #reactor 把数据当成参数传到这个函数中,这样我们就不用自己去解析数据
15     def dataReceived(self,data):
16         self.transport.write('[%s] %s' % (ctime(),data))
17 
18 # 我们创建一个 protocol 工厂。它被称为“工厂”是因为,每次我们
19 # 有连接进来的时候,它都会“生产”一个我们的 protocol 对象。
20 factory = protocol.Factory()
21 factory.protocol = TSServProtocol
22 print 'waiting for connection'
23 
24 # 在 reactor 中安装一个 TCP
25 # 监听器以等待服务请求。当有请求进来时,
26 # 创建一个 TSServProtocol 实例来服务那个客户。
27 reactor.listenTCP(port,factory)
28 reactor.run()

 使用 Twisted Internet 类的时间戳 TCP 服务器--服务端

原文地址:https://www.cnblogs.com/lovely7/p/5833604.html