qt create Linux http协议请求多线程访问实例
时间: 2023-12-04 07:02:15 浏览: 73
Qt多线程通信样例
4星 · 用户满意度95%
好的,下面是一个简单的示例代码,演示了如何使用Qt创建一个多线程的HTTP请求:
```cpp
#include <QtNetwork>
#include <QThread>
class HttpThread : public QThread
{
Q_OBJECT
public:
explicit HttpThread(QObject *parent = nullptr)
: QThread(parent)
{
}
protected:
void run() override
{
QNetworkAccessManager manager;
QNetworkRequest request(QUrl("http://www.example.com"));
QNetworkReply *reply = manager.get(request);
QEventLoop loop;
connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
loop.exec();
QString response = reply->readAll();
qDebug() << response;
reply->deleteLater();
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 创建多个线程
QList<HttpThread*> threads;
for (int i = 0; i < 10; ++i) {
HttpThread *thread = new HttpThread(&a);
threads.append(thread);
thread->start();
}
// 等待所有线程完成
for (HttpThread *thread : threads) {
thread->wait();
}
return a.exec();
}
#include "main.moc"
```
这个示例程序创建了10个线程,每个线程都会发送一个HTTP GET请求到`http://www.example.com`,然后等待响应,并将响应输出到控制台。注意,在每个线程中使用了一个`QEventLoop`对象来等待网络请求完成。在主线程中,程序等待所有子线程完成之后退出。
阅读全文