#include "qsoleapplication.h" #include #include #include #include #include QSoleApplication::QSoleApplication(int &argc, char **argv) :QApplication(argc,argv) { } QSoleApplication::~QSoleApplication() { } bool QSoleApplication::isRunningSameApp() { QString serverName = QCoreApplication::applicationName(); qDebug()< 1) stream << args.last(); else stream << QString(); stream.flush(); socket.waitForBytesWritten(); //qApp->quit(); return true; } //运行到这里,说明没有实例在运行,那么创建服务器。 m_localServer = new QLocalServer(this); connect(m_localServer, SIGNAL(newConnection()), this, SLOT(newLocalSocketConnection())); //监听新到来的连接 if (!m_localServer->listen(serverName)) { if (m_localServer->serverError() == QAbstractSocket::AddressInUseError && QFile::exists(m_localServer->serverName())) { //确保能够监听成功 QFile::remove(m_localServer->serverName()); m_localServer->listen(serverName); } } return false; } void QSoleApplication::newLocalSocketConnection() { QLocalSocket *socket = m_localServer->nextPendingConnection(); if (!socket) return; socket->waitForReadyRead(1000); //QTextStream stream(socket); //其他处理 emit newSocketConnect(); qDebug()<<"newSocketConnect"; delete socket; }