使用Python Twisted的代理服务器
我正在尝试编写一个代理服务器,它可以做以下几件事:使用Python Twisted的代理服务器,python,python-2.7,proxy,twisted,Python,Python 2.7,Proxy,Twisted,我正在尝试编写一个代理服务器,它可以做以下几件事: 从客户端接收数据 验证数据 将数据转发到服务器 立即从服务器接收数据发送回客户端 在node.js中,我可以使用server.pipe(client)执行#4。在twisted中有类似的技巧吗 我所拥有的: class Player(protocol.Protocol): def __init__(self): self.server_connection = reactor.connectTCP('192.168.2
接收数据
发送回客户端node.js
中,我可以使用server.pipe(client)
执行#4。在twisted中有类似的技巧吗
我所拥有的:
class Player(protocol.Protocol):
def __init__(self):
self.server_connection = reactor.connectTCP('192.168.254.101', 1000, GateFactory())
...
class Gate(protocol.Protocol):
def dataReceived(self, recd):
print recd
...
class GateFactory(protocol.ClientFactory):
def buildProtocol(self):
return Gate()
...
class PlayerFactory(protocol.Factory):
def __init__(self):
self.players = {}
def buildProtocol(self, addr):
return Player(self.players)
...
reactor.listenTCP(1000, PlayerFactory())
我的问题
我通过执行以下操作将数据转发到服务器:
self.gate_connection.transport.write(packet)
但是我如何从以下方面将响应转发给客户:
class Gate(protocol.Protocol):
def dataReceived(self, recd):
print recd
当您构建
GateFactory
时,您需要向它传递一个对self
(Player
实例)的引用,GateFactory
在buildProtocol
中创建它的Gate
实例时,它可以传递给它的Gate
实例
(也请考虑使用,而不是<代码> CONTCTPTC直接)。< /P>我应该如何使用它?您应该使用它,因为它更快,更灵活。code>HostnameEndpoint将连接到IPv6地址以及IPv4,并且它将正确地支持诸如循环DNS之类的功能
connectTCP
具有特定的签名,但如果您的代码采用端点,则可以将其切换到任何其他类型的端点(例如TLS或通过txtorcon的Tor)。至于如何使用它,链接文档提供了一个示例。