def __init__(self): QWidget.__init__(self) self.setupUi(self) self.accessDialog = AccessDialog(self) self.accessDialog.hide() self.dispatchTable = { 'time': self.respTime, 'schedule': self.respSchedule, 'bulletin': self.respBulletin, 'readstatus': self.respReadStatus, 'access': self.respAccess } self.timer = QTimer() self.timer.timeout.connect(self.tick) self.timer.start(1000) self.reconnectTimer = QTimer() self.reconnectTimer.timeout.connect(self.onReconnect) self.reconnectTimer.stop() self.socket = QLocalSocket() self.socket.connected.connect(self.onConnect) self.socket.disconnected.connect(self.onDisconnect) self.socket.readyRead.connect(self.onReadyRead) self.socket.error.connect(self.onError) self.socket.connectToServer('doorbotgui') self.setCursor(Qt.BlankCursor) self.showFullScreen() self.show()
def testSingleInstanceOrExit(): connected = False #try connect to QLocalServer local_sock = QLocalSocket() import sys QObject.connect(local_sock, SIGNAL('connected()'), sys.exit) connected = local_sock.connectToServer(qApp.applicationName()) global LOCALSERVER if not connected: LOCALSERVER = QLocalServer() print 'setting up localserver', qApp.applicationName() ret = LOCALSERVER.listen(qApp.applicationName()) if not ret: import os try: #todo not good way to remove /tmp/guiTimer.py os.remove('/tmp/' + qApp.applicationName()) ret = LOCALSERVER.listen(qApp.applicationName()) except: raise Exception( 'LOCALSERVER listen failed' 'you may need to remove /tmp/guiTimer.py manually') QObject.connect(LOCALSERVER, SIGNAL('newConnection()'), showMainWindow) else: print 'local socket connected' pass pass
def __init__(self, appID, argv): #-------------------------------------------------------------------------------------------------------------- # INICIAR LA CLASE #-------------------------------------------------------------------------------------------------------------- super(QSingleton, self).__init__(argv) #-------------------------------------------------------------------------------------------------------------- # CONFIGURACIONES INICIALES #-------------------------------------------------------------------------------------------------------------- self.appID = appID self._outSocket = QLocalSocket() self._outSocket.connectToServer(self.appID) self._isRunning = self._outSocket.waitForConnected() # Si hay instancias previas corriendo if self._isRunning: self._outStream = QTextStream(self._outSocket) self._outStream.setCodec('UTF-8') # Si es la primera instancia else: self._outSocket = None self._outStream = None self._inSocket = None self._inStream = None self._server = QLocalServer() self._server.listen(self.appID) self._server.newConnection.connect(self._onNewConnection)
def main(): global win signal.signal(signal.SIGINT, exit) args = parse_arguments() appKey = "scudcloud.pid" socket = QLocalSocket() socket.connectToServer(appKey) if socket.isOpen(): socket.close() socket.deleteLater() return 0 socket.deleteLater() app = QtGui.QApplication(sys.argv) app.setApplicationName(Resources.APP_NAME) app.setWindowIcon(QtGui.QIcon(Resources.get_path('scudcloud.png'))) try: settings_path = load_settings(args.confdir) except: print("Configuration directory " + args.confdir +\ " could not be created! Exiting...") raise SystemExit() minimized = True if args.minimized is True else None win = sca.ScudCloud(debug=args.debug, minimized=minimized, settings_path=settings_path) app.commitDataRequest.connect(win.setForceClose, type=QtCore.Qt.DirectConnection) server = QLocalServer() server.newConnection.connect(restore) server.listen(appKey) win.restore() if win.minimized is None: win.show() sys.exit(app.exec_())
def singleStart(self, mainWindow): self.mainWindow = mainWindow # Socket self.m_socket = QLocalSocket() self.m_socket.connected.connect(self.connectToExistingApp) self.m_socket.error.connect(self.startApplication) self.m_socket.connectToServer(self.applicationName(), QIODevice.WriteOnly)
def init(): """Start listening to incoming connections.""" global _server if _server is not None: return server = QLocalServer(None) # find a free socket name to use for name in ids(): if server.listen(name): break else: # all names failed, try to contact and remove stale file if that fails socket = QLocalSocket() for name in ids(): socket.connectToServer(name) if not socket.waitForConnected(10000): QLocalServer.removeServer(name) if server.listen(name): break else: socket.disconnectFromServer() else: # no ids left, don't listen return app.aboutToQuit.connect(server.close) server.newConnection.connect(slot_new_connection) os.environ["FRESCOBALDI_SOCKET"] = name _server = server
def singleStart(self, mainWindow, pid): self.mainWindow = mainWindow self.pid = pid # Socket self.m_socket = QLocalSocket() self.m_socket.connected.connect(self.connectToExistingApp) self.m_socket.error.connect(self.startApplication) self.m_socket.connectToServer(pid, QIODevice.WriteOnly)
def is_running(): local_socket = QLocalSocket() local_socket.connectToServer("ninja_ide") if local_socket.state(): result = (True, local_socket) else: result = (False, local_socket) return result
def get(): """Return a remote Frescobaldi, or None if not available.""" socket = QLocalSocket() name = os.environ.get("FRESCOBALDI_SOCKET") for name in (name, ) if name else ids(): socket.connectToServer(name) if socket.waitForConnected(5000): from . import api return api.Remote(socket)
def __isServerRun(self, servername): # 判断是否有一个同名的服务器在运行 # 用一个localsocket去连一下, # 如果能连上就说明 有一个在运行了 ls = QLocalSocket() ls.connectToServer(servername) if (ls.waitForConnected(1000)): ls.disconnectFromServer() # // 说明已经在运行了 ls.close() return True return False
def send_message(self, message): if not self.is_running: raise Exception( "Client cannot connect to IPC server. Not running.") socket = QLocalSocket(self) socket.connectToServer(self.socket_filename, QIODevice.WriteOnly) if not socket.waitForConnected(self.timeout): raise Exception(str(socket.errorString())) socket.write(pickle.dumps(message)) if not socket.waitForBytesWritten(self.timeout): raise Exception(str(socket.errorString())) socket.disconnectFromServer()
def sendMessage(self, message): assert (self._isRunning) if self.isRunning(): socket = QLocalSocket(self) socket.connectToServer(self._key, QIODevice.WriteOnly) if not socket.waitForConnected(self._timeout): return False socket.write(message.encode('utf-8')) if not socket.waitForBytesWritten(self._timeout): return False socket.disconnectFromServer() return True return False
def main(): global win signal.signal(signal.SIGINT, exit) args = parse_arguments() appKey = "scudcloud.pid" socket = QLocalSocket() socket.connectToServer(appKey) if socket.isOpen(): socket.close() socket.deleteLater() return 0 socket.deleteLater() app = QtGui.QApplication(sys.argv) app.setApplicationName(Resources.APP_NAME + ' Slack_SSB') app.setWindowIcon(QtGui.QIcon(Resources.get_path('scudcloud.png'))) try: settings_path, cache_path = load_settings(args.confdir, args.cachedir) except: print("Data directories " + args.confdir + " and " + args.cachedir + " could not be created! Exiting...") raise SystemExit() minimized = True if args.minimized is True else None urgent_hint = True if args.urgent_hint is True else None # Let's move the CSS to cachedir to enable additional actions copyfile(Resources.get_path('resources.css'), os.path.join(cache_path, 'resources.css')) win = sca.ScudCloud(debug=args.debug, minimized=minimized, urgent_hint=urgent_hint, settings_path=settings_path, cache_path=cache_path) app.commitDataRequest.connect(win.setForceClose, type=QtCore.Qt.DirectConnection) server = QLocalServer() server.newConnection.connect(restore) server.listen(appKey) win.restore() if win.minimized is None: win.show() sys.exit(app.exec_())
def __init__(self, argv, key): QApplication.__init__(self, argv) self._key = key self._timeout = 1000 socket = QLocalSocket(self) socket.connectToServer(self._key) if socket.waitForConnected(self._timeout): self._isRunning = True socket.abort() return socket.abort() self._isRunning = False self._server = QLocalServer(self) self._server.newConnection.connect(self.__onNewConnection) self._server.listen(self._key) self.aboutToQuit.connect(self.__onAboutToQuit)
def main(): app = QtGui.QApplication(sys.argv) ffstoreMainWin = FFStoreMainWindow() # set skin styleSheet # SkinHelper().setStyle(app, ':/qss/white_style.qss') SkinHelper().setStyle(app, ':/qss/dark_style.qss') # single QApplication solution # http://blog.csdn.net/softdzf/article/details/6704187 serverName = 'FFStoreManagerServer' clientSocket = QLocalSocket() clientSocket.connectToServer(serverName) # 如果连接成功, 表明server 已经存在,当前已经有实例在运行, 将参数发送给服务端 if clientSocket.waitForConnected(500): # print u'连接成功 arg = ', winOsArgv stream = QtCore.QTextStream(clientSocket) # for i in range(0, len(winOsArgv)): # stream << winOsArgv[i] # 对于打开终端来说,所携带参数为第1位(打开文件的地址),第0位为本执行程序地址 # close client socket clientSocket.close() return app.quit() # 如果没有实例执行,创建服务器 localServer = QLocalServer() # 一直监听端口 localServer.listen(serverName) # 初始化全局变量 GlobalVar.init() try: showWindowLogic = ShowWindowLogic(mainWindow=ffstoreMainWin, localServer=localServer) showWindowLogic.show() # uiMainWidget.setupUi(mainWindow=ffstoreMainWin, localServer=localServer) # ffstoreMainWin.show() sys.exit(app.exec_()) finally: localServer.close()
def main(): app = QtGui.QApplication(sys.argv) androidToolsMainWin = AndroidToolsMainWindow() uiMainWidget = Ui_MainWidget() winOsArgv = WinCommandEnCoding.getOsArgv() # single QApplication solution # http://blog.csdn.net/softdzf/article/details/6704187 serverName = 'AndroidToolsServer' clientSocket = QLocalSocket() clientSocket.connectToServer(serverName) QSettingsUtil.init() # 如果连接成功, 表明server 已经存在,当前已经有实例在运行, 将参数发送给服务端 if clientSocket.waitForConnected(500): # print u'连接成功 arg = ', winOsArgv stream = QtCore.QTextStream(clientSocket) # for i in range(0, len(winOsArgv)): # stream << winOsArgv[i] # 对于打开终端来说,所携带参数为第1位(打开文件的地址),第0位为本执行程序地址 if len(winOsArgv) > 1: stream << winOsArgv[1] stream.setCodec('UTF-8') stream.flush() clientSocket.waitForBytesWritten() # close client socket clientSocket.close() return app.quit() # 如果没有实例执行,创建服务器 localServer = QLocalServer() # 一直监听端口 localServer.listen(serverName) # create db createDb() try: uiMainWidget.setupUi(androidToolsMainWin, localServer, winOsArgv) androidToolsMainWin.show() sys.exit(app.exec_()) finally: localServer.close()
def __init__(self, timeout=2000, size=2**20): self.app = QCoreApplication.instance() if self.app is None: self.app = QCoreApplication([]) self.sock = QLocalSocket() self.sock.connectToServer("LivePlot") if not self.sock.waitForConnected(): raise EnvironmentError("Couldn't find LivePlotter instance") self.sock.disconnected.connect(self.disconnect_received) key = str(uuid.uuid4()) self.shared_mem = QSharedMemory(key) if not self.shared_mem.create(size): raise Exception("Couldn't create shared memory %s" % self.shared_mem.errorString()) logging.debug('Memory created with key %s and size %s' % (key, self.shared_mem.size())) self.sock.write(key) self.sock.waitForBytesWritten() self.is_connected = True self.timeout = timeout atexit.register(self.close)
if status == 'COMPLETE': self.lblfull.setToolTip( 'Open mitmproxy full inspection capture for %s' % self.appname) self.lblfull.setCursor( QCursor(QtCore.Qt.PointingHandCursor)) else: self.lblfull.setToolTip('') self.lblfull.setCursor(QCursor()) if __name__ == '__main__': app = QApplication(sys.argv) # self.qtappname = 'Tapioca' socket = QLocalSocket() socket.connectToServer('Tapioca') if socket.isOpen(): socket.close socket.deleteLater() sys.exit(0) example = Example(app) socket.deleteLater() server = QLocalServer() server.newConnection.connect(example.restore) ok = server.listen('Tapioca') if not ok: if server.serverError() == QAbstractSocket.AddressInUseError: #print('Socket in use!')
#coding=utf-8 from time import sleep from PyQt4.QtCore import QTextStream,QString from PyQt4.QtNetwork import QLocalSocket import random import os if __name__ == "__main__": pid = os.getpid() ls = QLocalSocket() ls.connectToServer("localserver-test") if ls.waitForConnected(): print "连接成功" while True: try: ts = QTextStream(ls) ts << QString.number(random.randrange(1000)) + "\nTTTTTTTTTT" + "\n PID = " + QString.number(pid) + "\n" ts.flush() print "werite :", ls.waitForBytesWritten() print pid sleep(1) except Exception as e: print e.message