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

做暖网站做企业网站哪个平台好

做暖网站,做企业网站哪个平台好,网络营销的重点,龙岩网站设计招聘信息文章目录 Qt系统相关1. 多线程1.1 Qt多线程介绍1.2 常用函数1.3 线程安全 2. 网络2.1 UDP Socket2.2 TCP Socket Qt 系统相关 1. 多线程 1.1 Qt多线程介绍 QThread 代表一个在应用程序中可以独立控制的线程#xff0c;它还可以和进程中的其他线程共享数据。QThread 对象管理… 文章目录 Qt系统相关1. 多线程1.1 Qt多线程介绍1.2 常用函数1.3 线程安全 2. 网络2.1 UDP Socket2.2 TCP Socket Qt 系统相关 1. 多线程 1.1 Qt多线程介绍 QThread 代表一个在应用程序中可以独立控制的线程它还可以和进程中的其他线程共享数据。QThread 对象管理程序中的一个控制线程。 1.2 常用函数 函数 / 信号名功能描述run()线程的入口函数包含线程执行的代码逻辑start()调用 run () 开始执行线程根据优先级调度若线程已运行则不做任何事currentThread()返回指向管理当前执行线程的 QThread 指针isRunning()线程正在运行则返回 true否则返回 falsesleep()使线程休眠单位为秒msleep()使线程休眠单位为毫秒usleep()使线程休眠单位为微秒wait()阻塞线程直到关联线程完成执行从 run () 返回若已完成或未启动则返回 true或达到指定时间超时返回 false默认 ULONG_MAX 表示永远等待类似 POSIX pthread_join () 功能terminate()终止线程执行是否立即终止取决于操作系统调度策略之后建议用 wait ()finished()线程结束时发出此信号可用于线程清理工作 timethread.h #ifndef TIMETHREAD_H #define TIMETHREAD_H#include QThreadclass TimeThread : public QThread {Q_OBJECTpublic:TimeThread();void run(); //线程任务函数signals:void sendTime(QString Time); //声明信号函数 };#endif // TIMETHREAD_H widget.h #ifndef WIDGET_H #define WIDGET_H#include QWidget #include timethread.h //添加头文件 #include QLabelQT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();void on_btn_clicked();void showTime(QString Time);private:QLabel* label;Ui::Widget *ui;TimeThread t; //定义线程对象 }; #endif // WIDGET_Htimethread.cpp #include timethread.h#include QTime #include QDebug #include QStringTimeThread::TimeThread() {}void TimeThread::run() {while(1){QString time QTime::currentTime().toString(hh:mm:ss);qDebug() time;emit sendTime(time); //发送信号sleep(1);} }widget.cpp #include widget.h #include ui_widget.h#include timethread.h #include QGridLayout #include QLabel #include QPushButton #include QSpacerItemWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);QGridLayout* layoutnew QGridLayout();labelnew QLabel(this);label-setFixedSize(500,300);label-setFrameShape(QFrame::Box);label-setText(SSSSSSSSSSSSSSSSSSSS);QPushButton* btnnew QPushButton(this);btn-setFixedSize(100,50);btn-setText(确定);layout-addWidget(label,0,0,1,1);layout-addWidget(btn,1,0,1,1);this-setLayout(layout);connect(t,TimeThread::sendTime,this,Widget::showTime);connect(btn,QPushButton::clicked,this,Widget::on_btn_clicked); }Widget::~Widget() {delete ui; }void Widget::on_btn_clicked() {t.start(); //开启线程 }void Widget::showTime(QString Time) {label-setText(Time); } 连接类型说明适用场景注意事项Qt::AutoConnection根据信号和槽所在线程自动选择连接类型同线程用 Qt::DirectConnection不同线程用 Qt::QueuedConnection通用场景无Qt::DirectConnection信号发出时槽函数立即在同线程执行信号和槽在同一线程注意线程安全性Qt::QueuedConnection信号发出时槽函数插入接收对象所属线程事件队列下次事件循环执行信号和槽在不同线程确保线程安全Qt::BlockingQueuedConnection与 Qt::QueuedConnection 类似但发送信号线程会阻塞至槽函数执行完毕需等待槽函数执行完再继续的场景注意可能引起线程死锁Qt::UniqueConnection可与其他连接类型位或组合使用用于保证相同信号和槽之间只有一个连接无 1.3 线程安全 实现线程互斥和同步常用的类有   • 互斥锁QMutex、QMutexLocker   • 条件变量QWaitCondition   • 信号量QSemaphore   • 读写锁QReadLocker、QWriteLocker、QReadWriteLock QMutex互斥锁 函数功能描述QMutex()创建互斥锁。~QMutex()销毁互斥锁。lock()获取锁阻塞等待。tryLock()尝试获取锁不阻塞。unlock()释放锁。recursiveLock()递归锁获取递归锁。tryRecursiveLock()尝试获取递归锁。unlockRecursive()释放递归锁。 QMutexLocker互斥锁辅助类 函数功能描述QMutexLocker(QMutex * mutex)构造时尝试获取互斥锁。~QMutexLocker()析构时释放互斥锁。relock()重新获取互斥锁。unlock()手动释放互斥锁。 QWaitCondition条件变量 函数功能描述QWaitCondition()创建条件变量。~QWaitCondition()销毁条件变量。wait(QMutex * mutex)线程等待释放互斥锁被唤醒后重新获取。wait(QMutex * mutex, ulong time)等待指定时间超时返回 false。wakeOne()唤醒一个等待线程。wakeAll()唤醒所有等待线程。 QSemaphore信号量 函数功能描述QSemaphore(int n 0)创建信号量设置初始值。~QSemaphore()销毁信号量。acquire(int n 1)获取 n 个资源阻塞等待。tryAcquire(int n 1)尝试获取 n 个资源不阻塞。release(int n 1)释放 n 个资源。 QReadLocker读写锁 - 读操作辅助类 函数功能描述QReadLocker(QReadWriteLock * lock)构造时获取读锁。~QReadLocker()析构时释放读锁。relock()重新获取读锁。unlock()手动释放读锁。 QWriteLocker读写锁 - 写操作辅助类 函数功能描述QWriteLocker(QReadWriteLock * lock)构造时获取写锁。~QWriteLocker()析构时释放写锁。relock()重新获取写锁。unlock()手动释放写锁。 QReadWriteLock读写锁 函数功能描述QReadWriteLock()创建读写锁。~QReadWriteLock()销毁读写锁。lockForRead()获取读锁阻塞。tryLockForRead()尝试获取读锁不阻塞。unlock()释放锁。lockForWrite()获取写锁阻塞。tryLockForWrite()尝试获取写锁不阻塞。 2. 网络 2.1 UDP Socket QUdpSocket 名称类型说明对标原生 APIbind(const QHostAddress, quint16)方法绑定指定的端口号bindreceiveDatagram()方法返回 QNetworkDatagram读取一个 UDP 数据报recvfromwriteDatagram(const QNetworkDatagram)方法发送一个 UDP 数据报sendtoreadyRead信号在收到数据并准备就绪后触发无类似 IO 多路复用的通知机制 QNetworkDatagram 名称类型说明对标原生 APIQNetworkDatagram(const QByteArray, const QHostAddress, quint16)构造函数通过 QByteArray、目标 IP 地址、目标端口号构造一个 UDP 数据报通常用于发送数据时无data()方法获取数据报内部持有的数据返回 QByteArray无senderAddress()方法获取数据报中包含的对端的 IP 地址无recvfrom 包含该功能senderPort()方法获取数据报中包含的对端的端无recvfrom 包含该功能 服务端    widget.h #ifndef WIDGET_H #define WIDGET_H#include QWidget #include QUdpSocketQT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();QUdpSocket* socket;void processRequest();QString process(const QString);private:Ui::Widget *ui; }; #endif // WIDGET_Hwidget.cpp #include widget.h #include ui_widget.h#include QMessageBox #include QUdpSocket #include QNetworkDatagramWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);// 1. 设置窗⼝标题this-setWindowTitle(服务器);// 2. 实例化 socketsocket new QUdpSocket(this);// 3. 连接信号槽, 处理收到的请求connect(socket, QUdpSocket::readyRead, this, Widget::processRequest);// 4. 绑定端⼝bool ret socket-bind(QHostAddress::Any, 9090);if (!ret) {QMessageBox::critical(nullptr, 服务器启动出错, socket-errorString());return;} }Widget::~Widget() {delete ui; }void Widget::processRequest() {// 1. 读取请求const QNetworkDatagram requestDatagram socket-receiveDatagram();QString request requestDatagram.data();// 2. 根据请求计算响应const QString response process(request);// 3. 把响应写回到客户端QNetworkDatagram responseDatagram(response.toUtf8(),requestDatagram.senderAddress(), requestDatagram.senderPort());socket-writeDatagram(responseDatagram);// 显示打印日志QString log [ requestDatagram.senderAddress().toString() : QString::number(requestDatagram.senderPort()) ] req: request , resp: response;ui-listWidget-addItem(log); }QString Widget::process(const QString request) {return request; } 客户端    widget.h #ifndef WIDGET_H #define WIDGET_H#include QWidget #include QUdpSocketQT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();private slots:void on_pushButton_clicked();private:Ui::Widget *ui;// 创建 socket 成员QUdpSocket* socket; }; #endif // WIDGET_Hwidget.cpp #include widget.h #include ui_widget.h#include QNetworkDatagram// 提前定义好服务器的 IP 和 端⼝ const QString SERVER_IP 127.0.0.1; const quint16 SERVER_PORT 9090;Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);// 1. 设置窗口名字this-setWindowTitle(客户端);// 2. 实例化 socketsocket new QUdpSocket(this);connect(socket, QUdpSocket::readyRead, this, []() {const QNetworkDatagram responseDatagram socket-receiveDatagram();QString response responseDatagram.data();ui-listWidget-addItem(QString(服务器说: ) response);}); }Widget::~Widget() {delete ui; }void Widget::on_pushButton_clicked() {// 1. 获取到输⼊框的内容const QString text ui-lineEdit-text();// 2. 构造请求数据QNetworkDatagram requestDatagram(text.toUtf8(), QHostAddress(SERVER_IP),SERVER_PORT);// 3. 发送请求socket-writeDatagram(requestDatagram);// 4. 消息添加到列表框中ui-listWidget-addItem(客⼾端说: text);// 5. 清空输⼊框ui-lineEdit-setText(); } 2.2 TCP Socket QTcpServer 名称类型说明对标原生 APIlisten(const QHostAddress, quint16 port)方法绑定指定地址和端口号并开始监听bind 和 listennextPendingConnection()方法从系统获取已建立好的 tcp 连接返回 QTcpSocket 用于和客户端通信acceptnewConnection信号新客户端连接建立好后触发无类似 IO 多路复用通知机制 QTcpSocket 名称类型说明对标原生 APIreadAll()方法读取接收缓冲区所有数据返回 QByteArrayreadwrite(const QByteArray)方法将数据写入 socketwritedeleteLater方法标记 socket 对象无效在下个事件循环析构释放无类似 “半自动垃圾回收”readyRead信号数据到达且准备就绪时触发无类似 IO 多路复用通知机制disconnected信号连接断开时触发无类似 IO 多路复用通知机制
文章转载自:
http://www.morning.tmxfn.cn.gov.cn.tmxfn.cn
http://www.morning.qgjxt.cn.gov.cn.qgjxt.cn
http://www.morning.dpnhs.cn.gov.cn.dpnhs.cn
http://www.morning.mbnhr.cn.gov.cn.mbnhr.cn
http://www.morning.nbqwt.cn.gov.cn.nbqwt.cn
http://www.morning.jxwhr.cn.gov.cn.jxwhr.cn
http://www.morning.csgwd.cn.gov.cn.csgwd.cn
http://www.morning.attorneysportorange.com.gov.cn.attorneysportorange.com
http://www.morning.lwnb.cn.gov.cn.lwnb.cn
http://www.morning.dfqmy.cn.gov.cn.dfqmy.cn
http://www.morning.rqlbp.cn.gov.cn.rqlbp.cn
http://www.morning.cxlys.cn.gov.cn.cxlys.cn
http://www.morning.flmxl.cn.gov.cn.flmxl.cn
http://www.morning.kjawz.cn.gov.cn.kjawz.cn
http://www.morning.zsleyuan.cn.gov.cn.zsleyuan.cn
http://www.morning.mrtdq.cn.gov.cn.mrtdq.cn
http://www.morning.xpzgg.cn.gov.cn.xpzgg.cn
http://www.morning.drpbc.cn.gov.cn.drpbc.cn
http://www.morning.jljwk.cn.gov.cn.jljwk.cn
http://www.morning.nwbnt.cn.gov.cn.nwbnt.cn
http://www.morning.gtjkh.cn.gov.cn.gtjkh.cn
http://www.morning.xzqzd.cn.gov.cn.xzqzd.cn
http://www.morning.xgzwj.cn.gov.cn.xgzwj.cn
http://www.morning.bdypl.cn.gov.cn.bdypl.cn
http://www.morning.lkrmp.cn.gov.cn.lkrmp.cn
http://www.morning.bszmy.cn.gov.cn.bszmy.cn
http://www.morning.ybgt.cn.gov.cn.ybgt.cn
http://www.morning.yfrlk.cn.gov.cn.yfrlk.cn
http://www.morning.mkkcr.cn.gov.cn.mkkcr.cn
http://www.morning.srrzb.cn.gov.cn.srrzb.cn
http://www.morning.c7501.cn.gov.cn.c7501.cn
http://www.morning.xshkh.cn.gov.cn.xshkh.cn
http://www.morning.nbsbn.cn.gov.cn.nbsbn.cn
http://www.morning.nwclg.cn.gov.cn.nwclg.cn
http://www.morning.dkbsq.cn.gov.cn.dkbsq.cn
http://www.morning.lanyee.com.cn.gov.cn.lanyee.com.cn
http://www.morning.bzcjx.cn.gov.cn.bzcjx.cn
http://www.morning.chmkt.cn.gov.cn.chmkt.cn
http://www.morning.mjwnc.cn.gov.cn.mjwnc.cn
http://www.morning.neletea.com.gov.cn.neletea.com
http://www.morning.lynkz.cn.gov.cn.lynkz.cn
http://www.morning.enjoinfo.cn.gov.cn.enjoinfo.cn
http://www.morning.tbnpn.cn.gov.cn.tbnpn.cn
http://www.morning.gydsg.cn.gov.cn.gydsg.cn
http://www.morning.rbrd.cn.gov.cn.rbrd.cn
http://www.morning.trjr.cn.gov.cn.trjr.cn
http://www.morning.gnkdp.cn.gov.cn.gnkdp.cn
http://www.morning.zsthg.cn.gov.cn.zsthg.cn
http://www.morning.lfdmf.cn.gov.cn.lfdmf.cn
http://www.morning.fpqq.cn.gov.cn.fpqq.cn
http://www.morning.jydhl.cn.gov.cn.jydhl.cn
http://www.morning.xqkcs.cn.gov.cn.xqkcs.cn
http://www.morning.ktskc.cn.gov.cn.ktskc.cn
http://www.morning.pyswr.cn.gov.cn.pyswr.cn
http://www.morning.qpnb.cn.gov.cn.qpnb.cn
http://www.morning.bgqqr.cn.gov.cn.bgqqr.cn
http://www.morning.qkxt.cn.gov.cn.qkxt.cn
http://www.morning.xrwbc.cn.gov.cn.xrwbc.cn
http://www.morning.lbssg.cn.gov.cn.lbssg.cn
http://www.morning.wzjhl.cn.gov.cn.wzjhl.cn
http://www.morning.rbgqn.cn.gov.cn.rbgqn.cn
http://www.morning.llxqj.cn.gov.cn.llxqj.cn
http://www.morning.sdecsd.cn.gov.cn.sdecsd.cn
http://www.morning.wcqkp.cn.gov.cn.wcqkp.cn
http://www.morning.gbfzy.cn.gov.cn.gbfzy.cn
http://www.morning.lfpzs.cn.gov.cn.lfpzs.cn
http://www.morning.gpkjx.cn.gov.cn.gpkjx.cn
http://www.morning.zyslyq.cn.gov.cn.zyslyq.cn
http://www.morning.lqlc.cn.gov.cn.lqlc.cn
http://www.morning.rhsg.cn.gov.cn.rhsg.cn
http://www.morning.qkpzq.cn.gov.cn.qkpzq.cn
http://www.morning.ssqrd.cn.gov.cn.ssqrd.cn
http://www.morning.bwttj.cn.gov.cn.bwttj.cn
http://www.morning.sgbk.cn.gov.cn.sgbk.cn
http://www.morning.lgphx.cn.gov.cn.lgphx.cn
http://www.morning.dwmmf.cn.gov.cn.dwmmf.cn
http://www.morning.mczjq.cn.gov.cn.mczjq.cn
http://www.morning.jfwrf.cn.gov.cn.jfwrf.cn
http://www.morning.nfbxgtj.com.gov.cn.nfbxgtj.com
http://www.morning.ruifund.com.gov.cn.ruifund.com
http://www.tj-hxxt.cn/news/282525.html

相关文章:

  • 建设网站的网页设计北京网站备案拍照的地点
  • 创建自己的网站怎么弄wordpress 动态特效
  • 怎样建设网站赚钱ar做网站
  • 营销网站的建设与管理包括哪些事项如何攻击Wordpress站点
  • 重庆观音桥附近酒店搜索引擎优化的常用方法
  • 网站建设指数是什么意思建筑模板尺寸
  • 出口网站平台宁波seo快速优化
  • 向总部建设网站申请书帮别人做网站要投资吗
  • 商丘公司做网站濮阳市做网站公司
  • 合肥百度搜索优化网站页面优化签象客
  • 网站seo规范公众号设置下载wordpress
  • 长沙网站设计公司怎么样响应式设计的基本原理
  • seo网站优化优化排名seo推广公司排名
  • 做pc端网站精英淘宝图片做链接的网站
  • 网站的动态新闻数据库怎么做深圳做小程序网站设计
  • 网站改版收费自己怎么自学软件开发
  • 什么网站做聚乙烯醇好的为什么有的网站打不开 别的网站就可以打开
  • 昆明网站建设公司多少钱广东东莞石碣今天新闻
  • 网站推广模式怎么开网店?
  • 装饰公司网站方案个体工商户注册查询
  • 贵阳做网站方舟网络北京科技网站建设公司
  • 浙江省住房与城乡建设部网站wordpress 文件说明
  • 类似 wordpress 建站做的比较好的二手交易网站有哪些
  • 北京网站建设 一流建设手机银行的网站
  • 网站建设 个体经营范围聊城网站制作公司
  • 电子商务的网站开发开发app需要什么设备
  • 网站网店建设河北省 建设执业注册中心网站
  • 移动论坛网站模板免费微信网站制作平台
  • 深圳哪家网站建设好网站做子页面怎么做的
  • 做旅游攻略网站网页制作app手机版