从Twisted中的SSL套接字读取

时间:2010-01-02 11:53:25

标签: python sockets openssl twisted

我正在尝试在Twisted中实现一个SSL客户端,它必须连接到套接字并读取二进制数据(特别是数据元组)。我已经将代码设置为似乎连接和断开连接成功但没有数据读取套接字。

class FeedbackHandler(LineReceiver):
  MAX_LENGTH = 1024*1024

  def connectionMade(self):
    log.debug('feedbackHandler connectionMade')

  def rawDataReceived(self, data):
    log.debug('feedbackHandler rawDataReceived %s' % binascii.hexlify(data))
    self.io.write(data)

  def lineReceived(self, data):
    log.debug('feedbackHandler lineReceived %s' % binascii.hexlify(data))
    self.io.write(data)

  def connectionLost(self, reason):
    log.debug('feedbackHandler connectionLost %s' % reason)
    self.deferred.callback(self.io.getValue())
    io.close()

启动它的代码:

factory = self.clientProtocolFactory() # a ClientFactory instance
context = self.getContextFactory(CERT_FILE) # a ClientContextFactory 
reactor.connectSSL(server, port, factory, context)

然而,当它运行时,无论setRawMode如何,都不会调用任何接收到的方法。从服务器上读取什么都没有?连接时会立即调用connectionMadeconnectionLost,并以ConnectionDone错误实例终止。

1 个答案:

答案 0 :(得分:2)

看看ssldump或wireshark。由于您没有看到此级别提供的任何数据,因此您应该将级别下拉到其中一个工具。其中一个可能会泄露SSL协商错误,或者服务器永远不会发送任何字节,或者根据您到目前为止发现的内容而难以猜测的其他内容。你可能还没有完整的答案,但你会有更多的难题。