精华内容
下载资源
问答
  • QTHttp服务器

    2014-08-21 16:14:47
    qt5.3.1环境下,自己可用的源码,原封不动上传,保证可用,qmake一下,构建一下,启动成功后,打开ie浏览器中输入:http://127.0.0.1:58890/ 可以看到测试结果
  • Qt Http服务器简单变成https服务器

    千次阅读 2018-05-11 18:05:10
    一开始qt http服务器还是好简单,因为就是TCP连接上面一个简单协议。后来听说发布小程序必须用到https+域名,估计好多刚开始往小程序里跑的小伙子都哭晕在测所。不过我不负责写小程序,我负责搞用qt 写个http的...

    近来被https搞晕了,由于需要微信小程序必须用到https协议,安全性比较重要喔!不过对于我们这个嵌入式产品也没什么安不安全。一开始qt http服务器还是好简单,因为就是TCP连接上面一个简单协议。后来听说发布小程序必须用到https+域名,估计好多刚开始往小程序里跑的小伙子都哭晕在测所。不过我不负责写小程序,我负责搞用qt 写个http的服务器。所以有后来的艰难例程!—! (你要知道我不懂网络和前端的玩意都是嘛0101那些)

    入正题,环境:

    qt4+qtcreator+win10

    window 2012R2 service

    先写好http服务器,网上好多例程,其实qt上面编程不用管https的什么ssl 那些证书什么之类,那是好麻烦等下再说我的遭遇!由于是放在云服务器上面的,所以有固定的IP,你想要https访问必须有域名+申请SSL证书密钥,这个和编程没关系去申请就可以了。这个过程需要时间,证书是包含xxxxx.crt证书和xxxxx.key文件,如下:

    顶级文件夹,里面好几个服务器的证书和密钥


    我们是需要Nginx这个,你可先百度Nginx什么来的。。


    这里下载一个代理服务器Nginx

    http://nginx.org/en/download.html

    选择Window就可以了,然后放到某路径下这个是不能删的,然后解压。这个玩意一开始被网上好多人说的误导了,搞得安装特别麻烦特别麻烦特别麻烦!!!例如说什么要利用命令行安装,还有用WINSW这个也试过了,安装是成功了但是有点麻烦。Winsw就是一个可以直接命令行操作对你要想操作而它本身不能在命令行操作的nginx等无界面软件。。所以现在不用他们,直接找到nginx.exe目录下的conf/nginx.conf的配置文件,用txt打开,写入一个service https,其实里面有一个不过被注释掉了。写其实就关注几点,我的例子如下:

    #HTTPS server
        server {
            listen       443 ssl;  #这个不用改必须443默认
            server_name  www.xxxx.cn; #这个你要改,外网要访问过来的域名,也就是自己的域名
            ssl on;
            ssl_certificate      C:/Https_Certificate/xxxxxxx.crt;#证书路径
            ssl_certificate_key  C:/Https_Certificate/xxxxxxx.key;#密钥路径
            #ssl_session_cache    shared:SSL:1m;
            #ssl_session_timeout  5m;
            #ssl_ciphers  HIGH:!aNULL:!MD5;
            #ssl_prefer_server_ciphers  on;
            ssl_prefer_server_ciphers on;
            ssl_session_timeout 1d;
            ssl_session_cache shared:SSL:50m;
            ssl_session_tickets off;
        location / {
            proxy_pass      http://localhost:8090/;#我的软件端口是8090
     	proxy_connect_timeout 1s; #配置点1
            proxy_read_timeout 60s; #配置点2,如果没效,可以考虑这个时间配置长一点
            proxy_send_timeout 12s; #配置点3
        }
        }

    重要就是证书密钥,域名,本地软件端口。

    然后直接双击上一级的目录里面的nginx.exe,然后会一闪而过,惨了!!!!这个又不行?我当时是这样!然后怎么大神请教后原来已经运行了。你在命令行里输入tasklist查看进程,发现了nginx



    好了,着就行了打开你用qt写的http服务器就可以了,nginx其实就是将https握手加密的过程解决了转发数据给你,相当于透传了http。是不是好简单!!!!其中如果配置文件写的不对,重新修改先把nginx关闭,改完再双击启动!关掉可以用tskill nginx命令。。。

    好了讲下我的遭遇吧,一开始听说要用ssl,于是要研究了QSslsocket那些玩意,下载了openssl回来生成自签名证书加入到服务器上面还是不行,各种不行。。这过程写了https服务器和客户端来验证,几天写来无果,客户端https外网访问没问题。就是证书加进来老是握手失败。

    好了终于解决今天可以睡个好觉了。另外赞下这个nginx真的不错简单代理,他的功能还多着呢!嘻嘻 这种架构方案也不错!感谢qq好友大神1527979930热心指导谢了。。。


    展开全文
  • Qt HTTP 服务器 - 因为核心程序员用 C++ 编写网络应用程序 :) 它使用 Joyent 的并且是异步的,不需要任何继承。 QHttpServer 在 MIT 许可下可用。 注意:QHttpServer 现在不完全符合 HTTP 标准! 不要将它用于...
  • http服务器_by_qt

    2020-11-18 11:11:28
    Qt编写的http服务器,用于观察浏览器发过来的http请求。Qt编写的http服务器,用于观察浏览器发过来的http请求。Qt编写的http服务器,用于观察浏览器发过来的http请求。
  • Qt Http QHttpMultiPart上传文件到java http服务器 1.最近项目用到了Qt上传文件到HTTP服务器,由于之前做过一个http接收文件的服务器,所以直接拿来调试。由于对http的了解一个不够深入,调试了许久都没有成功上传...

                             Qt Http QHttpMultiPart上传文件到java http服务器

    1.最近项目用到了Qt上传文件到HTTP服务器,由于之前做过一个http接收文件的服务器,所以直接拿来调试。由于对http的了解一个不够深入,调试了许久都没有成功上传文件到服务器。之前是写的服务器一直是用网页的方式和postman来模仿post文件。

    由于找不到失败的原因,所以直接用wareshark来抓包看一下Qt post的数据和网页上传有什么区别。在第4.节图中给出了网页上传文件时wareshark抓取到的数据包。

    2.经过调试后可用的Qt  代码,由于我的http是在多线程中使用,所以在此处加入了一个QEventLoop来同步等待返回上传结果。

    void HttpObject::uploadFile()
    {
        QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);
    
        QString path = QString("/home/maowendi/Desktop/image.jpg");
        QHttpPart imagePart;
        imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
        imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"file\"; filename=\"image.jpg\""));
        imgFile = new QFile(path);
        imgFile->open(QIODevice::ReadOnly);
        imagePart.setBodyDevice(file);
        imgFile->setParent(multiPart); 
        multiPart->append(imagePart);
        QUrl url("http://172.20.149.148:8089/upload-file");
        QNetworkRequest request(url);
    
        uploadFileReply = m_httpNAM->post(request, multiPart);
        multiPart->setParent(uploadFileReply); 
        connect(uploadFileReply,SIGNAL(finished()),this,SLOT(httpUploadFinished()));
        QEventLoop eventLoop;
        connect(m_httpNAM, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));
        eventLoop.exec();       
    }
    
    void HttpObject::httpUploadFinished()  
    {
       if(uploadFileReply->error() == QNetworkReply::NoError) {
        qDebug()<<"upload file finished";
        imgFile->flush();
        imgFile->close();
        uploadFileReply->deleteLater();
        uploadFileReply = NULL;
        delete imgFile;
        imgFile = NULL;
       }
       else
       {
            qDebug()<<"error string:"<<uploadFileReply->errorString();
            uploadFileReply->deleteLater();
       }
    
    }

     

    3.Qt官方例程的代码如下,根据官方例程还是要做一点修改才能成功上传文件的。

    其中红色框部分根据我自己的java服务器测试抓包数据进行了修改。见下图

    4.抓包工具Wareshark,抓取数据包如下

    5.结果执行代码后服务器返回成功

    6.Java服务器处理接收文件代码

       /**
         * 上传单个文件`      1
         *
         * @param file 上传文件 MultipartFile 的对象
         * @return 上传的结果
         */
        @RequestMapping(value = "/upload-file", method = RequestMethod.POST)
        @ResponseBody
        public String uploadFile(HttpServletRequest request,@RequestParam("file") MultipartFile file) {
            saveFile(file);
            System.out.println(filePath);
    
            ReturnWeb ret = new ReturnWeb();
            ret.setCode(1);
            ret.setCount(0);
            ret.setMsg("Success");
            JSONObject jsonS = (JSONObject) JSON.toJSON(ret);
            return jsonS.toString();
        }
      /**
         * 把 HTTP 请求中的文件流保存到本地
         *
         * @param file MultipartFile 的对象
         */
        private boolean saveFile(MultipartFile file) {
            if (!file.isEmpty()) {
                try {
                    // getRealPath() 取得 WEB-INF 所在文件夹路径
                    // 如果参数是 "/temp", 当 temp 存在时返回 temp 的本地路径, 不存在时返回 null/temp (无效路径)
                    //String path ="D:\\IDEAPro\\File"+ File.separator + file.getOriginalFilename();;
                    String path =servletContext.getRealPath("") + File.separator + file.getOriginalFilename();
                    FileCopyUtils.copy(file.getInputStream(), new FileOutputStream(path));
                    fileName = file.getOriginalFilename();
                    filePath = "http://172.20.149.148:8089/"+fileName;
                    return true;
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return false;
        }

     

    展开全文
  • Qt http server client 服务器客户端源代码,不用配置,直接用at creator运行,带有测试例子
  • 基于QtHTTP服务器

    2019-04-08 07:53:22
    本源码有对应的博文教程: https://blog.csdn.net/qq78442761/article/details/89080144
  • Qt实现简单的Http服务器

    Qt实现简单的Http服务器

     

    展开全文
  • 工程的主要任务就是, 从QT界面发送HTTP请求,服务器做出响应。QT是通过 QNetworkAccessManager对请求和响应进行管理的。 大致QT界面如下(比较简单,没有美化): 1.建立工程 打开QT Creator ,文件 - 新建...

    工程环境: QT5.9.1 &  VS2015

    工程的主要任务就是, 从QT界面发送HTTP请求,服务器做出响应。QT是通过 QNetworkAccessManager对请求和响应进行管理的。

    大致QT界面如下(比较简单,没有美化):

    1.建立工程

    打开QT Creator ,文件 - 新建文件或项目,左侧项目处选择“APPlication”,右侧选择“Qt Widgets Application”,之后点击choose

    根据自己的需要,更改项目名称和创建路径,点击下一步,之后选择自己的工程编译器,因为我电脑上安装的是VS2015,所以进行一下选择:

    选择完成后,点击下一步,进入类信息设置界面,如下图,我将基类更改为QWidget:

    点击下一步,完成即可。在项目显示栏,我们可以看到有一下文件,点击widget.ui,我们可以进行QT界面的设计。

    在QT界面设计窗口,我们添加两个label,一个lineEdit,两个PushButton,一个 progressBar,进度条是用来显示加载图片或者文件的进度, 大致效果如下。然后右击加载,选择转到槽,出来如下所示,按如图选择,点击OK,会自动创建槽函数,把那个转到槽函数编辑处。

    返回编辑,打开编辑widget.h如下,

    打开widget.cpp,首先在构造函数中添加一下代码:

    manager = new QNetworkAccessManager(this);

    ui->progressBar->hide();//在刚开始需要隐藏进度条

    当点击加载,会自动转到槽函数:void on_pushButton_clicked()

    编辑槽函数void on_pushButton_clicked()代码如下:

    void Widget::on_pushButton_clicked(){

    url = ui->lineEdit->text();//获取界面中输入的URL地址

    QFileInfo info(url.path());//获取文件夹的绝对路径

    QString fn(info.fileName());//获取需要下载文件的文件名

    file = new QFile(fn);//生成一个相同文件名的文件夹,用来存放下载的内容

    startRequest(url);//发送请求

    ui->progressBar->setValue(0);//将进度条的值设置为0

    ui->progressBar->show();//显示进度条

    }

    客户端发送完请求,服务器会进行响应,当服务器响应完成,开始下载,startRequest()函数代码如下:

    void Widget::startRequest(QUrl url){

    reply = manager->get(QNetworkRequest(url));//当服务器接收到请求后

    connect(reply;SINGAL(finished()),this,SLOT(replyFinished(QNetworkReplty *)));//显示图片

    connect(reply,SIGNAL(readyRead()),this,SLOT(httpReadyRead()));//服务器响应请求后,开始下载内容

    connect(reply,SINGAL(finished()),this,SLOT(httpFinished()));//下载完成后,关闭文件

    connect(reply,SINGAL(finished()),this,SLOT(updateDataReadProgress(qint64,qint64)));//更新进度条

    }

    编写httpReadyRead()函数:

    void widget::httpReadyRead(){

    if(file) file->write(reply->readAll());//读取文件

    }

    编写updateDataReadProgress()函数:

    void widget::updateDataReadProgress(qint64 a,qint64 b){//更新进度条

    ui->progressBar->setMaximum(b);

    ui->progressBar->setValue(a);

    }

    编写httpFinished()函数:

    void widget::httpFinished(){

    ui->progressBar->hide();

    file->flush();

    file->close();

    reply->deleteLater();

    delete file;

    delete manager;

    manager = 0;

    file  =0;
    }

    void Widget::replyFinished(QNetworkReply *reply){ //显示图片
    ui->progressBar->hide();
    QMovie *mov = new QMovie(reply);
    mov->setScaledSize(ui->label->size());//自适应label的大小
    ui->label->setMovie(mov);
    mov->start();
    }

    运行编译,在URL输入:http://localhost:88/123.jpg,点击加载按钮,显示界面如下:

     

    展开全文
  • QtHttp服务器通讯下载文件

    热门讨论 2013-05-31 14:31:28
    QtHttp服务器通讯下载并保存文件,带有进度条,输入网址,下载指定地址处的文件
  • #ifndef QT_HTTPSERVER_H #define QT_HTTPSERVER_H #include <QObject> #include <QtCore> #include <QtNetwork> class HttpServer : public QObject { Q_OBJECT public: static ...
  • QtWebApp:基于Qt Framework的C ++ HTTP服务器库
  • Qt http操作

    2020-05-12 15:14:42
    在介绍Qt http之前,先介绍以下http的基本过程:http是一个简单的请求-响应协议,百度上是这么定义的:http通常运行在TCP之上,它是基于C/S架构进行通信的,其客户端的实现程序主要是Web浏览器,例如Firefox、...
  • Qt HTTP POST json 访问服务器

    千次阅读 2017-11-02 11:51:30
    这部分通常使用HTTP(Hypertext Transfer Protocol )协议(“http:/”),另外还有HTTPS(Hypertext Transfer Protocol Secure)协议。 第二部分给出了服务器的因特网地址(例如,  https://zh.wikipedia.org ) ...
  • QtWebApp的使用【在Qt中搭建HTTP服务器】(一)

    千次阅读 多人点赞 2020-09-01 09:14:35
    QtQtWebApp能够实现在C++中开发HTTP Web服务器应用程序。 首先,需要先安装Qt的软件开发工具包。点此下载 其次,下载最新的QtWebApp库。点此下载 下载并解压缩QtWebApp ZIP文件。你将会看到: 如何使用QtWebApp...
  • 目录 官方解析 ...QtWepApp是一个C++的http服务器,受到了java Servlets的启发,因为是Qt写的,所以有跨平台的支持。 QtWebApp包含如下的组成部分: HTTP Server Template Engine File Logger ...
  • QTHTTP上传Java服务器

    2020-07-17 10:31:29
    这是我在项目中遇到的,QT制作的界面向java服务器上传文件,网上的例程大多数都是上传图片,并没有上传其他文件的,接下来直接上代码 类中添加 private slots: void Progress(qint64 bytesSent, qint64 bytesTotal...
  • Qt网络编程实战之HTTP服务器视频课程配套资料 Qt网络编程实战之HTTP服务器资料
  • qhttpengine, 用于Qt应用程序的HTTP服务器 QHTTPEngine Qt中开发HTTP服务器应用程序的简单类集。文档要了解有关构建和使用库的更多信息,请访问此页:https://ci.quickmediasolutions.com/job/qhttpengine-
  • 转载请注明出处:...qt5 上传图片到http服务器,亲测可以用,qt5.8+vs2015,直接上码; 头文件: #ifndef UPDATEPICTEST_H #define UPDATEPICTEST_H #include <QtWidgets/QMainWindow>...
  • JQHttpServer 是一个基于Qt开发的轻量级HTTP服务器 。目前支持GET和POST两个协议。底层有TcpSocket和LocalSocket两个版本,方便使用。用到的Qt库有:corenetworkconcurrenttestlib(测试用,运行不需要)理论上可以...
  • QT HTTP POST

    千次阅读 2018-04-16 11:09:12
    上一篇文章主要介绍了Qt网络编程的GET方式,这里再说一下POST方式。首先说一下自己的环境: 主机:Win7;Web服务器:TomCat v7.x;数据库服务器:MySQL v5.x。 主要是用Qt实现登录验证,后台使用servlet响应登录...
  • 最近需求需要开发一款 HTTP ,然后由于先前接触过Qt,就直接用QtHTTP服务器了,也是为了当作练手,要不然是直接上HTTP框架的。 后端用C++ Qt框架 前端为了练手 当然是纯生的 js html css 具体的HTTP 实现过程...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 674
精华内容 269
关键字:

qthttp服务