gpt4 book ai didi

c++ - 暂停执行直到收到套接字上的特定消息?

转载 作者:太空宇宙 更新时间:2023-11-04 11:35:54 25 4
gpt4 key购买 nike

有没有办法让函数暂停执行直到套接字收到特定消息?使用 Signals + QEventLoop 等待是行不通的,因为虽然它可以等待信号,但没有任何方法可以获取信号发出的数据(或者是否存在?)。

最佳答案

您可以连接到以下信号:

void QIODevice::readyRead() [signal]

然后,您基本上会读取数据,如果它是您要查找的数据,您可以将 bool 变量设置为 true,该变量最初为 false。只有当变量为真时,您的函数才会继续执行。

确保暂停的函数没有在没有专用线程的情况下以同步方式休眠太多等。

因此,这将是解决您的任务的一种方法:

MySocketManager::MySocketManager(QObject *parent): QObject(parent)
{
...
connect(m_mySocket, SIGNAL(readyRead()), SLOT(handleReadyRead()));
...
}

void MySocketManager::handleReadyRead()
{
if (m_mySocket.readAll() == "myMessage")
continue = true;
}

...

void myFunction()
{
...
continue = false;
qDebug() << "Pause";
while (!continue) { ... }
qDebug() << "Continue";
...
}

这是问题的一点点简化,但由于除了寻求解决方案之外您没有表现出太多努力,这应该让您开始。

关于c++ - 暂停执行直到收到套接字上的特定消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23065815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com