使用Python扭曲的代理服务器

时间:2015-02-03 23:56:00

标签: python python-2.7 proxy twisted

我正在尝试编写代理服务器来完成一些事情:

  1. 从客户端接收数据。
  2. 验证数据。
  3. 将数据转发到服务器。
  4. 从服务器immediately接收数据发送回客户端。
  5. node.js我可以使用server.pipe(client)执行#4。扭曲中有类似的技巧吗?

    我有什么:

    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
    

1 个答案:

答案 0 :(得分:1)

构建GateFactory时,您需要将selfPlayer实例)的引用传递给GateFactory然后传递给Gate buildProtocol实例在connectTCP中创建它们时。

(另外,请考虑直接使用HostnameEndpoint而不是{{1}}。)