我正在实现‘本地财富服务器’的例子(来自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;
}发布于 2011-08-30 23:33:31
如果您希望您的服务器通知您的客户端,我认为您应该创建并发送您自己的消息,如下所示:
QString fortune = "Server down";但是当您的服务器有传入消息时,就会出现这种情况。
也可以使用QTcpServer::close()方法关闭服务器
void FortuneServer:: pause()
{
this.close();
}你的客户端应用程序将失去连接,你应该能够通过以下命令获得你想要的信号:
connect(tcpSocket, SIGNAL(error(QAbstractSocket::SocketError)),
this, SLOT(displayError(QAbstractSocket::SocketError)));发布于 2011-08-30 20:17:18
你不能发出QLocalSocket::ServerNotFoundError,因为它不是一个信号。您应该定义自己的信号并发出它(您可以在信号中传递值)。您还应该实现插槽并将信号连接到它。阅读有关signals and slots的更多信息。
https://stackoverflow.com/questions/7242778
复制相似问题