twisted是一个很给力的网络编程框架,涉及到网络编程的,就离不开socket,但是再twisted里面是看不到socket,就是因为twisted已经给我们封装好了。
#!/usr/bin/python
from twisted.internet import reactor, protocol
class QuickDisconnectProtocol(protocol.Protocol):
def connectionMade(self):
print "Connected to %s." % self.transport.getPeer().host
self.transport.loseConnection()
class BasicClientFactory(protocol.ClientFactory):
protocol = QuickDisconnectProtocol
def clientConnectionLost(self, connector, reason):
print "Lost connection: %s" % reason.getErrorMessage()
reactor.stop( )
def clientConnectionFailed(self, connector, reason):
print "Connection failed: %s" % reason.getErrorMessage()
reactor.stop()
reactor.connectTCP('www.google.com', 80, BasicClientFactory())
reactor.run()
可以看到,其中有几个重要的抽象:
1、Procotol Factory,他主要是协议的实现,可以用来创建协议,管理用来连接的对象。为每个成功的连接创建一个协议。这个协议,我么你可以自己去写,当然,有很多是已经封装好了的。
2、Procotol,Protocol对应着某个协议的具体实现,比如ftp、imap,或者是某些自定义的协议。再Factory连接成功的时候,就可以得到一个Procotol。可以说,她是Factory的一个实例。
3、Transport,一个Transport代表者一个可以接受发送的数据连接。当我们想从读取低城的数据时,可以使用Transport
以上纯属个人见解!