【问题标题】:Reading from an SSL Socket in Twisted从 Twisted 中的 SSL 套接字读取
【发布时间】:2010-01-02 11:53:24
【问题描述】:

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

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 错误实例终止。

【问题讨论】:

  • 建立连接后,另一端是否发送了一些东西?
  • 如果self.ioStringIO 的一个实例,那么您应该调用self.io.getvalue() 而不是self.io.getValue()

标签: python sockets openssl twisted


【解决方案1】:

看看 ssldump 或 wireshark。由于您没有看到在此级别交付的任何数据,因此您应该将级别降低到这些工具之一。其中一个可能会显示 SSL 协商错误,或者服务器从不发送任何字节,或者仅根据您目前发现的内容难以猜测的其他内容。你可能仍然没有完整的答案,但你会有更多的谜题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-24
    • 2011-10-29
    • 1970-01-01
    • 2019-04-02
    • 2013-10-12
    • 1970-01-01
    相关资源
    最近更新 更多