当前位置: 首页 > news >正文

建设网站电话专业的网站设计公司

建设网站电话,专业的网站设计公司,展馆设计公司排名,荣成网站制作公司最近在做QT的项目,但是一直是带界面(QT Widgets)程序,前几天收到个需求,是要做个socket服务端的桌面程序,界面有没有都成,然后就想着接着用 QT Widgets 搞,结果辛辛苦苦把socket服…

最近在做QT的项目,但是一直是带界面(QT  Widgets)程序,前几天收到个需求,是要做个socket服务端的桌面程序,界面有没有都成,然后就想着接着用 QT  Widgets 搞,结果辛辛苦苦把socket服务的代码写完运行后,用netCat工具指令 nc localhost 1234 模拟客户端去连接socket,一直连不上。。。。

此处连不上是第一个坑:排查命令行用指令搜了所有监听1234端口(我socket服务器代码监听的端口就是1234)的指令,发现搜不到,说明监听根本就没启动,但是代码没报错,中间查阅贼多资料,没结果,直接说结果吧,【服务端项目创建的时候必须选Console Application!】,最后用这个重新见了个项目,同样的代码, nc localhost 1234连上了!!!怀疑是二个创建的权限不一样。

接着开发。。。。。。。到写这个服务端应用更新程序功能的时候,发现下载代码zip的代码没生效,下载文件的目录一直是空的,然后换了好几种写法,发现都不行,然后测试发现同样的下载代码放到main.cpp的main函数下面是可以下载成功的,但是放到别的cpp下就不行!问AI Chat  他说

DownLoader的生命周期在使用的时候被销毁了,然后就想着既然main函数下可以,那可以把DownLoader对象一直穿到使用的cpp不就行了,然后在使用的cpp的构造函数中把它给穿进去了,然后就在构造里接收这个对象的时候报错了  代码如下:
Business::Business(QString device_id,QString identifying,Downloader downloader2) : QObject() { Downloader downloader1 = downloader2;} 
上述代码 中Downloader downloader1 = downloader2; 报错了。。。  
接着查原因是:Downloader 对象不能直接拷贝。通常,Qt 中的 QObject 及其派生类(如 Downloader)都是禁止拷贝的,因为它们涉及到复杂的资源管理和对象层次结构。

然后又get到了个新知识点   智能指针(例如 std::shared_ptrstd::unique_ptr)来管理 Downloader 对象,或者确保只传递 Downloader 对象的引用或指针。

然后把代码改成如下了:main.cpp的main函数传参:

auto downloader = std::make_shared<Downloader>();
Business* b = new Business(cpuid,identifying,downloader);

Business的构造改成如下:

Business::Business(QString device_id,QString identifying,std::shared_ptr<Downloader> downloader2) : QObject(), downloader1(downloader2) {   
}

然后在这个构造函数里用downloader1下载测试了下,也下载成功了!说明排查的方向没有错,继续。

在需要下载的地方(我的是mqtt消息的回调函数里)全部使用downloader1进行下载,然后又遇到了第三个报错!,如下:

QObject: Cannot create children for a parent that is in a different thread. (Parent is QNetworkAccessManager(0x57ea93b13d48), parent's thread is QThread(0x57ea93b0ebc0), current thread is QThread(0x740ebc0013a0)

说是线程不一致,然后用到了信号和槽函数,修改后的Business的构造如下:

Business::Business(QString device_id,QString identifying,std::shared_ptr<Downloader> downloader2) : QObject(), downloader1(downloader2){
    connect(this,SIGNAL(test111(const QString&)),this,SLOT(test222(const QString&)));
}

然后在mqtt回调中执行发信号

emit test111(downloadUrl);

在槽函数 中用downloader1进行下载

void Business::test222(const QString str){
 
     qDebug() << "======================================Download Url:" << str;
 
    QString url = str;  // 替换为你要下载的文件的 URL
    QString savePath = "/home/xxxxxxxx/build-socket_server_ttt-Desktop_Qt_5_13_1_GCC_64bit-Debug/tfcard/AAAAAA";  // 替换为保存文件的路径
    downloader1->downloadFile(url, savePath);
 
    QObject::connect(downloader1.get(), &Downloader::downloadProgress, [](qint64 bytesReceived, qint64 bytesTotal) {
            qDebug() << "Download progress:" << bytesReceived << "/" << bytesTotal;
        });
 
   QObject::connect(downloader1.get(), &Downloader::downloadFinished, []() {
            qDebug() << "Download finished!";     
   });
}

测试发了下mqtt消息过去,下载成功了 !QT也是才自学了几天,被这几个问题搞了二三天,记录一下,下不再犯。

http://www.yayakq.cn/news/41545/

相关文章:

  • 河北省老区建设促进会网站基金公司网站建设方案
  • 我的世界用自己皮肤做壁纸网站dw内部网站链接怎么做
  • 优化网站推广教程排名做网站推广好做么
  • 做网站的几个必要步骤跨境网站建设
  • 大岭山镇仿做网站外语网站建设
  • 做宠物的网站主题思想东莞做网页公司
  • 二手交易网站建设目标四川招标采购网
  • raid管理网站开发免费网址域名注册
  • 品牌网站建设保障大蝌蚪windows 建网站
  • 网站建设论文设计番禺网站开发哪家专业
  • 帝国网站管理系统 数据库网站制作 北京网站建设公司
  • 人才网站开发文档网站建设与管理好处
  • 怎么用服务器lp做网站烽盈网站建设
  • 唐山市住房和诚乡建设局网站wordpress公司门户
  • dede网站头部不显示调用的名称电子商务企业网站建设规划方案
  • 全国企业管理信息系统网站北京住建网站
  • 建设网站需要多久到账西安做网站公司哪家比较好
  • 毕业设计网页制作咖啡网站图片网站建设项目需求说明书
  • 泰州网站建设案例网站建设的方向和任务
  • 网站建设 工作计划域名访问网站啥意思
  • 百度seo怎么做网站内容优化wordpress 会话
  • 网站开发人员是什么网站框架代码
  • 企业网站管理系统排名网络服务机构
  • 做微博长图的网站南京seo排名扣费
  • 长治做百度网站一年多少钱dw做网站怎么跳转
  • 做网站需要哪些人员服务器与网站吗
  • 如何做网站优化并快速提高权重企业营销网站建设公司哪家好
  • 知名wordpress架构网站一般做网站要多少钱
  • 马鞍山专业网站制作公司毕业设计做网站论文
  • 天津做网站的网络公司php发布wordpress接口