bool QtLocalPeer::isClient() { if(lockFile.isLocked()) { return false; } if(!lockFile.lock(QtLockedFile::WriteLock, false)) { return true; } bool res = server->listen(socketName); #if defined(Q_OS_UNIX) && (QT_VERSION >= QT_VERSION_CHECK(4,5,0)) // ### Workaround if(!res && server->serverError() == QAbstractSocket::AddressInUseError) { QFile::remove(QDir::cleanPath(QDir::tempPath()) + QLatin1Char('/') + socketName); res = server->listen(socketName); } #endif if(!res) { qWarning("QtSingleCoreApplication: listen on local socket failed, %s", qPrintable(server->errorString())); } QObject::connect(server, SIGNAL(newConnection()), SLOT(receiveConnection())); return false; }
Server::Server(QString name,QObject *parent) : QObject(parent) { totalRequests=0; myServer = new QLocalServer(this); if (!myServer->listen(name)) { qDebug()<<"Can't Start Server"; return; } //connect(ui->quitButton, SIGNAL(clicked()), this, SLOT(close())); connect(myServer, SIGNAL(newConnection()), this, SLOT(receiveConnection())); connect(this,SIGNAL(newMessage(QString)),this,SLOT(test(QString))); qDebug()<<"Started Server "<<name; }
bool QtLocalPeer::isClient() { if (lockFile.isLocked()) return false; if (!lockFile.lock(QtLockedFile::WriteLock, false)) return true; if (!QLocalServer::removeServer(socketName)) qWarning("QtSingleCoreApplication: could not cleanup socket"); bool res = server->listen(socketName); if (!res) qWarning("QtSingleCoreApplication: listen on local socket failed, %s", qPrintable(server->errorString())); QObject::connect(server, SIGNAL(newConnection()), SLOT(receiveConnection())); return false; }
ControlPeer::ControlPeer(QObject * parent) : QObject(parent) { p = new Private; p->error = NoError; p->mode = ModeUndefined; QString controlSocketPath = Guzum::Config::controlSocketPath(); p->server = new QLocalServer(this); bool res = p->server->listen(controlSocketPath); if (!res) { if (p->server->serverError() == QAbstractSocket::AddressInUseError) { // check is the server alive, if not then remove socket file and try again p->mode = ModeClient; QString response = sendRawMessage("test", 1000); if (error() != NoError) { // failed to send message so there is no listeners there // so try to start again QFile::remove(controlSocketPath); res = p->server->listen(controlSocketPath); if (!res) { p->error = FailedToStartServerError; p->mode = ModeUndefined; } else { p->error = NoError; p->mode = ModeServer; QObject::connect(p->server, SIGNAL(newConnection()), SLOT(receiveConnection())); } return; } else { // service responded, so we are really in client mode p->error = NoError; p->mode = ModeClient; } } else { p->error = FailedToStartServerError; p->mode = ModeUndefined; } } else { p->error = NoError; p->mode = ModeClient; } }
void LocalPeer::listen() { server_->listen(socket_name_); QObject::connect(server_, SIGNAL(newConnection()), SLOT(receiveConnection()), Qt::QueuedConnection); }