twisted是事件驱动的网络框架,用于开发异步网络应用程序和协议,twisted下载地址:https://pypi.org/simple/twisted/
下载形如Twisted-15.2.1.tar.bz2格式压缩包
tar -xf Twisted-15.2.1.tar.bz2解压
指定python setup.py install安装
一个使用twisted实现TCP服务器/客户端模型的例子:
server:
# -*- coding: UTF-8 -*-
#!/usr/env/bin python
from twisted.internet import protocol, reactor
from time import ctime
PORT = 21567
class TSServProtocol(protocol.Protocol):
#有客户端连接,调用此方法
def connectionMade(self):
clnt = self.clnt = self.transport.getPeer().host
print '...connected from:', clnt
#收到客户端发来的数据,调用此方法
def dataReceived(self, data):
self.transport.write('[%s] %s' % (ctime(), data))
factory = protocol.Factory()
factory.protocol = TSServProtocol
print 'waiting for connection...'
reactor.listenTCP(PORT, factory)
reactor.run()
client:
# -*- coding: UTF-8 -*-
#!/usr/env/bin python
from twisted.internet import protocol, reactor
HOST = '10.1.108.52'
PORT = 21567
class TSClntProtocol(protocol.Protocol):
#私有方法,建立连接后调用此函数发送数据
def sendData(self):
data = raw_input('> ')
if data:
print '...sending %s...' % data
self.transport.write(data)
else:
self.transport.loseConnection()
#重写此方法,建立连接后调用
def connectionMade(self):
self.sendData()
#重写此方法,接收数据后调用
def dataReceived(self, data):
print data
self.sendData()
class TSClntFactory(protocol.ClientFactory):
protocol = TSClntProtocol
clientConnectionLost = clientConnectionFailed = \
lambda self, connector, reason: reactor.stop()
reactor.connectTCP(HOST, PORT, TSClntFactory())
reactor.run()