一个简单的端口转发服务器:
#coding:utf8
__author__ = 'python'
from twisted.application.service import  Application,Service
from twisted.internet import  reactor,protocol
class Server(protocol.Protocol):
    def dataReceived(self, data):
        self.client.transport.write(data)
    def connectionMade(self):
        "暂停从transport读取任何数据,因为我们不知道收到数据后发给谁!"
        self.transport.pauseProducing()
        client=protocol.ClientCreator(reactor,Client)
        client.connectTCP(host="172.17.20.101",port=8500).addCallback(self.set_protocol)
    def connectionLost(self, reason):
        self.client.transport.loseConnection()
    def set_protocol(self,client):
        self.client=client
        client.set_protocol(self)
class Client(protocol.Protocol):
    def dataReceived(self, data):
        self.server.transport.write(data)
    def set_protocol(self,server):
        self.server=server
        self.server.transport.resumeProducing()#我们已经知道要把数据发给谁了,所以开始读取数据!
factory=protocol.ServerFactory()
factory.protocol=Server
reactor.listenTCP(8080,factory)
reactor.run()

效果如下:

成功转发到相应端口!

clipboard

posted on 2016-08-08 15:41  wolover  阅读(200)  评论(0编辑  收藏  举报