2010-01-02 72 views
3

我试图在Twisted中实现一个SSL客户端,它只需连接到套接字并读取二进制数据(特别是数据元组)。我已经得到代码,似乎连接和断开连接成功,但没有数据是有史以来从套接字读取。从扭曲的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错误实例终止。

+0

连接完成后,对方是否发送了一些内容? – iny 2010-01-03 10:28:36

+0

如果'self.io'是'StringIO'的一个实例,那么你应该调用'self.io.getvalue()'而不是'self.io.getValue()'。 – jfs 2010-06-09 12:56:25

回答

2

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