以下是一个使用Qt C++实现HTTP服务端,接收客户端通过POST发送的JSON字符串的示例代码:
#include <QCoreApplication>
#include <QTcpServer>
#include <QTcpSocket>
#include <QDebug>
class HttpServer : public QTcpServer
{
Q_OBJECT
public:
explicit HttpServer(QObject *parent = nullptr) : QTcpServer(parent) {}
protected:
void incomingConnection(qintptr socketDescriptor) override
{
QTcpSocket *socket = new QTcpSocket(this);
socket->setSocketDescriptor(socketDescriptor);
connect(socket, &QTcpSocket::readyRead, [=](){
QByteArray requestData = socket->readAll();
qDebug() << "Received data:" << requestData;
// 在这里处理收到的请求数据,解析JSON等操作
// 返回响应给客户端
QByteArray responseData = "HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\nHello";
socket->write(responseData);
socket->waitForBytesWritten();
socket->close();
});
connect(socket, &QTcpSocket::disconnected, [=](){
qDebug() << "Client disconnected";
socket->deleteLater();
});
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
HttpServer server;
if (!server.listen(QHostAddress::Any, 8080)) {
qCritical() << "Failed to start server";
return -1;
}
qDebug() << "Server started at port 8080";
return a.exec();
}
#include "main.moc"
在这个示例中,我们创建了一个HttpServer
类继承自QTcpServer
,重写了incomingConnection()
方法来处理新连接。在连接建立后,我们读取客户端发送的数据,并进行相应的处理(如解析JSON)。最后返回响应给客户端。
请注意修改端口号和处理逻辑以适应你的需求。记得在项目配置文件(如.pro文件)中添加网络模块:
QT += network
希望这个示例能够帮助你搭建一个简单的HTTP服务端来接收客户端通过POST发送过来的JSON字符串。
内容由零声教学AI助手提供,问题来源于学员提问