我正在尝试在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
如何,都不会调用任何接收到的方法。从服务器上读取什么都没有?连接时会立即调用connectionMade
和connectionLost
,并以ConnectionDone
错误实例终止。
答案 0 :(得分:2)
看看ssldump或wireshark。由于您没有看到此级别提供的任何数据,因此您应该将级别下拉到其中一个工具。其中一个可能会泄露SSL协商错误,或者服务器永远不会发送任何字节,或者根据您到目前为止发现的内容而难以猜测的其他内容。你可能还没有完整的答案,但你会有更多的难题。