首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为QLocalSocket发出错误

如何为QLocalSocket发出错误
EN

Stack Overflow用户
提问于 2011-08-30 19:57:38
回答 2查看 1K关注 0票数 1

我正在实现‘本地财富服务器’的例子(来自Qt 4.7.3)作为Windows上的一个服务。我想要的是,当有人暂停服务时,本地服务器应该将错误通知给连接的本地套接字(本地财富客户端)。错误可以是QLocalSocket::ServerNotFoundError。现在,如何从服务器示例中生成此错误。请看下面的代码,我希望在其中生成此错误。

代码语言:javascript
复制
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;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-30 23:33:31

如果您希望您的服务器通知您的客户端,我认为您应该创建并发送您自己的消息,如下所示:

代码语言:javascript
复制
QString fortune = "Server down";

但是当您的服务器有传入消息时,就会出现这种情况。

也可以使用QTcpServer::close()方法关闭服务器

代码语言:javascript
复制
void FortuneServer:: pause()
{
    this.close();
}

你的客户端应用程序将失去连接,你应该能够通过以下命令获得你想要的信号:

代码语言:javascript
复制
connect(tcpSocket, SIGNAL(error(QAbstractSocket::SocketError)),
             this, SLOT(displayError(QAbstractSocket::SocketError)));
票数 3
EN

Stack Overflow用户

发布于 2011-08-30 20:17:18

你不能发出QLocalSocket::ServerNotFoundError,因为它不是一个信号。您应该定义自己的信号并发出它(您可以在信号中传递值)。您还应该实现插槽并将信号连接到它。阅读有关signals and slots的更多信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7242778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档