qt http 服务demo
时间: 2023-09-12 16:00:24 浏览: 185
MyTcpServer.rar_MyTCPServer_QT TCP_climb679_familiar6x4_基于QT的TCP
Qt框架提供了一个用于创建HTTP服务器的类QHttpServer。下面是一个简单的Qt HTTP服务的示例代码:
```cpp
#include <QtCore/QCoreApplication>
#include <QHttpServer>
#include <QHttpServerRequest>
#include <QHttpServerResponse>
#include <QFile>
#include <QIODevice>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QHttpServer httpServer;
QObject::connect(&httpServer, &QHttpServer::newRequest, [](const QHttpServerRequest &request, QHttpServerResponse &response) {
if (request.method() == QHttpServerRequest::GET) {
// 设置响应头
response.setStatusCode(QHttpServerResponse::StatusCode::Ok);
response.setHeader("Content-Type", "text/html");
// 从本地文件读取内容
QFile file("index.html");
if (file.open(QIODevice::ReadOnly)) {
QByteArray content = file.readAll();
response.write(content);
} else {
response.setStatusCode(QHttpServerResponse::StatusCode::InternalServerError);
response.write("Failed to open file");
}
} else {
response.setStatusCode(QHttpServerResponse::StatusCode::MethodNotAllowed);
response.write("Method not allowed");
}
response.end();
});
if (!httpServer.listen(QHostAddress::Any, 8080)) {
qDebug() << "Failed to start server";
return 1;
}
qDebug() << "Server started";
return a.exec();
}
```
以上示例代码创建了一个HTTP服务器,监听所有可用的IP地址和8080端口。当服务器接收到GET请求时,它将返回一个名为`index.html`的本地文件的内容作为响应,否则返回适当的错误消息。
要使用该示例代码,您需要在Qt项目中添加`QT += network`到.pro文件中,以确保网络模块被包括在内。
请注意,该示例只是一个简单的演示,实际应用程序可能需要更复杂的逻辑和处理不同类型的请求。
阅读全文