如何为QLocalSocket发出错误

时间:2011-08-30 11:57:38

标签: qt qt4 qlocalsocket

我正在实施'本地财富服务器'示例(来自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;
}

2 个答案:

答案 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