Как исправить ошибку для QLocalSocket

Вопрос: Я использую пример "Local fortune server" (из Qt 4.7.3) как службу в Windows. Я хочу, чтобы, когда кто-то приостановил обслуживание, локальный сервер должен уведомить об ошибке подключенному локальному сокету (локальному клиенту удачи). Ошибка может быть QLocalSocket :: ServerNotFoundError. Теперь, как создать эту ошибку из примера сервера. Посмотрите на следующий код, где я хочу сгенерировать

Вопрос:

Я использую пример “Local fortune server” (из Qt 4.7.3) как службу в Windows. Я хочу, чтобы, когда кто-то приостановил обслуживание, локальный сервер должен уведомить об ошибке подключенному локальному сокету (локальному клиенту удачи). Ошибка может быть QLocalSocket :: ServerNotFoundError. Теперь, как создать эту ошибку из примера сервера. Посмотрите на следующий код, где я хочу сгенерировать эту ошибку.

void FortuneServer::incomingConnection(quintptr socketDescriptor) { if (disabled) { **// here i want to emit QLocalSocket::ServerNotFoundError** return; } QString fortune = fortunes.at(qrand() % fortunes.size()); FortuneThread *thread = new FortuneThread(socketDescriptor, fortune, this); connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater())); thread->start(); } void FortuneServer:: pause() { disabled = true; } Лучший ответ:

Если вы хотите, чтобы ваш сервер уведомлял ваших клиентов, я думаю, вы должны создать и отправить свое собственное сообщение, например:

QString fortune = «Server down»;

Но это произойдет, когда ваш сервер получит входящее сообщение.
или вы можете отключить сервер с помощью метода QTcpServer :: close()

void FortuneServer:: pause() { this.close(); }

ваше клиентское приложение потеряет соединение, и вы сможете получить сигнал, который вы хотите в нем:

connect(tcpSocket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(displayError(QAbstractSocket::SocketError))); Ответ №1

Вы не можете испускать QLocalSocket::ServerNotFoundError, потому что это не сигнал. Вы должны определить свой собственный сигнал и испустить его (вы можете передавать значения в сигналах). Вы также должны использовать слот и подключить к нему сигнал. Подробнее о сигналах и слотах.

Оцените статью
Добавить комментарий