文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Qt怎么实现http服务

2023-07-06 02:10

关注

本篇内容介绍了“Qt怎么实现http服务”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

先看执行结果:

Qt怎么实现http服务

Qt HttpServer

左边是开启的Qt Http服务,监控服务端口,及接收客户端请求;右侧是浏览器访问服务。

下面是具体代码:

HttpDemo.pro

QT += coreQT += networkQT -= gui CONFIG += c++11 consoleCONFIG -= app_bundle # The following define makes your compiler emit warnings if you use# any Qt feature that has been marked deprecated (the exact warnings# depend on your compiler). Please consult the documentation of the# deprecated API in order to know how to port your code away from it.DEFINES += QT_DEPRECATED_WARNINGS # You can also make your code fail to compile if it uses deprecated APIs.# In order to do so, uncomment the following line.# You can also select to disable deprecated APIs only up to a certain version of Qt.#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0 SOURCES += \        main.cpp \        myhttpserver.cpp # Default rules for deployment.qnx: target.path = /tmp/$${TARGET}/binelse: unix:!android: target.path = /opt/$${TARGET}/bin!isEmpty(target.path): INSTALLS += target HEADERS += \    myhttpserver.h

myhttpserver.h

#ifndef MYHTTPSERVER_H#define MYHTTPSERVER_H #include <QObject>#include <QTcpServer>#include <QTcpSocket> class MyHttpServer : public QObject{    Q_OBJECTpublic:    explicit MyHttpServer(QObject *parent = nullptr);    ~MyHttpServer();     QTcpSocket *socket; public slots:    void connection(); private:    qint64 bytesAvailable() const;    QTcpServer *server; signals: public slots:}; #endif // MYHTTPSERVER_H

main.cpp

#include <QCoreApplication>#include "myhttpserver.h" int main(int argc, char *argv[]){    QCoreApplication a(argc, argv);     MyHttpServer server;     return a.exec();}

myhttpserver.cpp

#include "myhttpserver.h"#include <QDebug> MyHttpServer::MyHttpServer(QObject *parent) : QObject(parent){    server = new QTcpServer(this);    connect(server, &QTcpServer::newConnection, this, &MyHttpServer::connection);    if(!server->listen(QHostAddress::Any, 8080))    {        qDebug() << "\nWeb服务未启动";    }    else    {         qDebug() << "\nWeb服务在端口8080等待客户端连接";    }} void MyHttpServer::connection(){    socket = server->nextPendingConnection();     while (!(socket->waitForReadyRead(100))); //等待从浏览器读取数据     char webBrowerRXData[1000];    int sv = socket->read(webBrowerRXData, 1000);    qDebug() << "正在从浏览器读取数据=" << QString(webBrowerRXData);     socket->write("HTTP/1.1 200 OK\r\n");       // \r needs to be before   \n    socket->write("Content-Type: text/html\r\n");    socket->write("Connection: close\r\n");    socket->write("Refresh: 1\r\n\r\n");        //refreshes web brower   every second.Request     socket->write("<!DOCTYPE>"                  "<html>"                      "<header>"                        "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />"                        "<title>测试Qt HttpServer</title>"                      "</header>"                      "<body>已连接秒数:");    QByteArray str;    static qint16 count;    //用于在浏览器上显示的统计数字    str.setNum(count++);    socket->write(str);    socket->write("</body>"                  "</html>");     socket->flush();    connect(socket, &QTcpSocket::disconnected, socket, &QTcpSocket::deleteLater);    socket->disconnectFromHost(); }  MyHttpServer::~MyHttpServer(){    socket->close();}

“Qt怎么实现http服务”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯