使用python twisted模块实现基本的TCP server 和client,以下是一个小例子,代码来自Python核心编程。先看一下server端的写法:
# -*- coding:utf-8 -*-
from twisted.internet import protocol, reactor
from time import ctime
port = 8888
class TSProtocol(protocol.Protocol):
def connectionMade(self):
clnt = self.clnt = self.transport.getPeer().host
print '...connected from : ', clnt
def dataReceived(self, data):
print '[%s] %s' % (ctime(), data)
self.transport.write('[%s] %s' % (ctime(), data))
factory = protocol.Factory()
factory.protocol = TSProtocol
print 'waiting for connection...'
reactor.listenTCP(port, factory)
reactor.run()
再看一下client端的写法:
# -*- coding:utf-8 -*-
from twisted.internet import protocol, reactor
HOST = '127.0.0.1'
port = 8888
class TCProtocol(protocol.Protocol):
def sendData(self):
data = raw_input('> ')
if data:
print '...sending %s...' % data
self.transport.write(data)
else:
self.transport.write('client lost connect')
self.transport.loseConnection()
print ' I lost'
def connectionMade(self):
self.sendData()
def dataReceived(self, data):
print data
self.sendData()
class TClntFactory(protocol.ClientFactory):
protocol = TCProtocol
clientConnLost = clientConnFailed = lambda self, connector, reason: reactor.stop()
reactor.connectTCP(HOST, port, TClntFactory())
reactor.run()