Я пытаюсь реализовать клиент SSL в Twisted, который просто должен подключаться к сокету и читать двоичные данные (в частности, кортежи данных). Я довел код до такой степени, что кажется, что он успешно подключается и отключается, но никакие данные никогда не считываются из сокета.
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
.
self.io
является экземпляромStringIO
, то вы должны вызыватьself.io.getvalue()
вместоself.io.getValue()
. - person jfs   schedule 09.06.2010