python – 在非反应器线程中扭曲transport.write

python – 在非反应器线程中扭曲transport.write,第1张

概述我正在设计一个gui应用程序作为服务器的客户端,我有3个类 一个用于扭曲协议的类,另一个用于工厂,第三个用于pyqt线程.如何从pyqt线程发送数据,例如,如果单击按钮我如何使用当前的扭曲连接发送命令,这里是我的代码的副本 from OpenSSL import SSL;import sysfrom twisted.internet.protocol import ClientFactoryf 我正在设计一个gui应用程序作为服务器的客户端,我有3个类

一个用于扭曲协议的类,另一个用于工厂,第三个用于pyqt线程.如何从pyqt线程发送数据,例如,如果单击按钮我如何使用当前的扭曲连接发送命令,这里是我的代码的副本

from OpenSSL import SSL;import sysfrom twisted.internet.protocol import ClIEntFactoryfrom twisted.internet import ssl,protocolfrom PyQt4 import QtCore,QtGuifrom gui import Ui_clIEntguiclass clIEntgui(QtGui.QMainWindow):    def __init__(self,parent=None):        QtGui.QWidget.__init__(self,parent)        self.ui = Ui_clIEntgui()        self.ui.setupUi(self)    def closeEvent(self,e):        try:reactor.callFromThread(reactor.stop)        except:passclass ClIEnt(protocol.Protocol):    def connectionMade(self):        global server_options        server_options['connection'] = True    def send(self,data):        self.transport.write(data)    def connectionLost(self,reason):        server_options['connection'] = False    def dataReceived(self,line):        print "receive:",lineclass ClIEntFactory(ClIEntFactory):    protocol = ClIEnt    def clIEntConnectionFailed(self,connector,reason):        print 'connection Failed'        try:reactor.stop()        except:passif __name__ == '__main__':    app = QtGui.QApplication([])    import qt4reactor    qt4reactor.install()    from twisted.internet import reactor    factory = ClIEntFactory()    reactor.connectSSL('localhost',8080,factory,ssl.ClIEntContextFactory())    application = clIEntgui(reactor)    application.show()    reactor.runReturn()    sys.exit(app.exec_())
解决方法 如果你使用 qt4reactor,你根本不需要乱用多个线程; Twisted将在QT线程中运行,它们可以自由地触及彼此的数据结构.

如果你想用线程做这个,你的例子已经包含了解决方案:reactor.callFromThread. (我建议使用callFromThread(clIEnt.send)而不是callFromThread(transport.write),因为客户端是一个协议,因此比Qt更多地存在于Twisted的Universe中.

总结

以上是内存溢出为你收集整理的python – 在非反应器线程中扭曲transport.write全部内容,希望文章能够帮你解决python – 在非反应器线程中扭曲transport.write所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1196620.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存