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

网站建设一键搭建广西柳州模板十大名牌

网站建设一键搭建,广西柳州模板十大名牌,石家庄长安区网站建设公司哪家好,在wordpress中 密码什么是多线程并发服务器#xff1f;在QT里如何使用多线程并发服务器呢#xff1f; 多线程并发服务器是一种网络服务器设计#xff0c;它能够同时处理多个客户端的请求。在多线程服务器中#xff0c;主线程负责监听和接受来自客户端的连接请求#xff0c;每当有一个新的连… 什么是多线程并发服务器在QT里如何使用多线程并发服务器呢 多线程并发服务器是一种网络服务器设计它能够同时处理多个客户端的请求。在多线程服务器中主线程负责监听和接受来自客户端的连接请求每当有一个新的连接请求到来时服务器就会创建一个新的线程来处理该连接。这样每个客户端都有一个专门的线程来为之服务从而实现并发处理多个客户端请求的目的。 下面是如何在QT里使用多线程并发服务器的流程。 可以先看这个图理解一下。 重写incomingConnection()函数 首先在myserver.h里创建一个Myserver类继承QTcpServer,重写 incomingConnection(); 并创建一个自定义信号。 myserver.h #ifndef MYSERVER_H #define MYSERVER_H #includeQTcpServerclass Myserver:public QTcpServer {Q_OBJECT public:Myserver(QObject *parent 0);//重写,传递套接字描述sd标志void incomingConnection(qintptr socketDescriptor);~Myserver(); signals: //信号函数不需要实现void sig_sendsd(qintptr sd); };#endif // MYSERVER_H 在myserver.c里实现重写的incomingConnection()函数,当有客户端连接的时会发送包含socket套接字描述符的信号sig_sendsd(socketDescriptor)上面创建的信号到主线程。套接字描述符socketDescriptor很重要在子线程里用来创建socket对象跟客户端进行通信。 #include myserver.hMyserver::Myserver(QObject *parent):QTcpServer(parent) {} void Myserver::incomingConnection(qintptr socketDescriptor) {//发送自定义信号给主线程(sd标志)emit sig_sendsd(socketDescriptor); } Myserver::~Myserver() { }创建子线程类 在socketthread.h里创建一个叫socketthread的子线程类用于处理每个客户端发来的信息。 #ifndef SOCKETTHREAD_H #define SOCKETTHREAD_H #includeQThread #includeQTcpSocketclass SocketThread:public QThread {Q_OBJECTpublic:SocketThread(qintptr sd);void run(); //重写run函数执行线程~SocketThread(); private slots:void slot_read();void slot_disconnect();private:qintptr sd;QTcpSocket *socket;};#endif // SOCKETTHREAD_H在socketthread.c中run()函数中处理客户端发来的信息以及发送信息到客户端。 #include socketthread.hSocketThread::SocketThread(qintptr sd):sd(sd) {}void SocketThread::run() {socketnew QTcpSocket;socket-setSocketDescriptor(sd);connect(socket,SIGNAL(readyRead()),this,SLOT(slot_read()));connect(socket,SIGNAL(disconnected()),this,SLOT(slot_disconnect())); }void SocketThread::slot_read() {isReadtrue;qDebug()客服端来消息了; } void SocketThread::slot_disconnect() {qDebug()客户端已断开;isRunfalse; } SocketThread::~SocketThread() {qDebug()子线程结束; } 主线程重点 在主线程里创建myserver类对象监听客户端等待客户端连接。当有客户端连接时myserver类对象会发出自定义信号sig_sendsd(qintptr)通过connect()函数执行槽函数slot_recv_sd()。在槽函数里创建子线程类对象在子线程类对象里创建socket套接字上图跟客户端通信。 MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow) {ui-setupUi(this);initIp();servernew Myserver(this);server-listen(QHostAddress::Any,12345); //any所有地址 12345port//当有新的客户端连接server对象会发出自定义信号connect(server,SIGNAL(sig_sendsd(qintptr)),this,SLOT(slot_recv_sd(qintptr))); } MainWindow::~MainWindow() {delete ui; } void MainWindow::initIp() //获取本地ip地址 {QString ip;QString hostName QHostInfo::localHostName();QHostInfo info QHostInfo::fromName(hostName);QListQHostAddress listinfo.addresses();for(int i0;ilist.size();i){//获取协议类型if(list[i].protocol()QAbstractSocket::IPv4Protocol){ip*;iplist[i].toString();}}ui-label_ip-setText(ip); } void MainWindow::slot_recv_sd(qintptr sd) {//创建子线程stnew SocketThread(sd);st-start();}最后的最后感谢大家的支持请求各路英雄豪杰多多打赏多多关注多多点赞我是只发布高质量文章的 better-code 。
http://www.zqtcl.cn/news/878017/

相关文章:

  • 手机网站空间申请做网站需要空间跟域名吗
  • 洛阳专业网站设计开发制作建站公司长沙网站制作app开发公司
  • 王也个人资料网页网络优化
  • 公司网站制作工作室如何重装一下wordpress
  • 域名服务商网站建一个网站多少钱
  • 北京哪家制作网站好淄博优化推广
  • 许昌网站建设科技公司公司查询网站查询系统
  • 老网站权重低的原因网站建设公司使用图片侵权使用者有无责任
  • 邹城网站建设网站建设要注意什么
  • 图片在线制作表情合肥网站推广优化
  • 哈尔滨网站建设网站分成几种类型
  • 网站怎么添加二级域名全栈网站开发
  • 网站公司建设网站收费模块专业的网站建设联系
  • 网站建设广告方案linchong.wordpress
  • 北京快速建站模板制作网页教程的软件
  • 深圳市住房建设局网站首页wordpress主页加关键词
  • 专业做网站较好的公司wordpress 大内存
  • 网站关站html5编辑器手机版下载
  • 网站域名多少钱住房和城乡建设部网站注册
  • seo整站优化 wordpress广州门户网站建设公司
  • 深圳市官网网站建设平台上海在建工程查询
  • 网页制作模板的网站免费合肥网站建设5k5
  • 公司信息化网站建设实施方案永久免费国外vps无需信用卡
  • 域名备案企业网站内容好网站建设公司开发
  • 合肥公司做网站网站代码需要注意什么
  • 梧州网站制作公司高端网站开发公司有哪些
  • seo网站设计北京做app的公司有哪些
  • 佛山淘宝设计网站设计价格软件商城免费下载 app
  • 物联网型网站开发cms系统源码
  • 淘宝价格网站建设wordpress 点餐