【发布时间】: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。没有什么可以从服务器读取吗? connectionMade 和 connectionLost 在连接时立即被调用,并以 ConnectionDone 错误实例终止。
【问题讨论】:
-
建立连接后,另一端是否发送了一些东西?
-
如果
self.io是StringIO的一个实例,那么您应该调用self.io.getvalue()而不是self.io.getValue()。
标签: python sockets openssl twisted