我正在实施'本地财富服务器'示例(来自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;
}
答案 0 :(得分:3)
如果您希望服务器通知您的客户,我认为您应该创建并发送您自己的消息,如:
QString fortune = "Server down";
但是,当您的服务器有传入消息时,这将会发生 或者您可以使用QTcpServer::close()方法
关闭服务器void FortuneServer:: pause()
{
this.close();
}
您的客户端应用程序将失去连接,您应该能够通过以下方式获取您想要的信号:
connect(tcpSocket, SIGNAL(error(QAbstractSocket::SocketError)),
this, SLOT(displayError(QAbstractSocket::SocketError)));
答案 1 :(得分:1)
你不能发射QLocalSocket::ServerNotFoundError
,因为它不是信号。您应该定义自己的信号并发出它(您可以传递信号中的值)。您还应该实现插槽并将信号连接到它。详细了解signals and slots。