QTday5 2024-06-19

作业要求:

1.思维导图

2.整理代码:TCP服务器

 作业1:思维导图

作业2:整理代码

运行代码:

widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QTcpServer>
#include <QList>
#include <QMessageBox>
#include <QTcpSocket>
#include <QByteArray>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_startBtn_clicked();void newConnection_slot();void readyRead_slot();private:Ui::Widget *ui;//套接字文件QTcpServer *server;QList<QTcpSocket *> socketlist;};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget),server(new QTcpServer(this))
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::on_startBtn_clicked()
{//1.创建好套接字后,首先绑定portquint16 port = ui->portEdit->text().toUInt();//2.开启监听if(server->listen(QHostAddress::Any,port)){//开启监听成功QMessageBox::information(this,"提示","开启监听成功",QMessageBox::Ok);}else{//开启监听失败QMessageBox::information(this,"提示","开启监听失败",QMessageBox::Ok);return;}//运行至此,开始连接newConnection()函数和槽connect(server,&QTcpServer::newConnection,this,&Widget::newConnection_slot);}void Widget::newConnection_slot()
{//进入该函数,说明接受到客户端的连接//1.创建用于通信的套接字文件QTcpSocket *s = server->nextPendingConnection();//2.放入套接字容器socketlist.push_back(s);//发送信号readyread,将套接字与对应槽函数连接,从而可以实现通信。connect(s,&QTcpSocket::readyRead,this,&Widget::readyRead_slot);
}void Widget::readyRead_slot()
{//首先去除无效套接字文件。for(int i=0;i<socketlist.count();i++){if(socketlist.at(i)->state()==0){//说明无效,从列表中去除socketlist.removeAt(i);}}//接受信息for(int i=0;i<socketlist.count();i++){if(socketlist.at(i)->bytesAvailable()!=0){//说明接受到了信息QByteArray msg = socketlist.at(i)->readAll();ui->msgList->addItem(QString::fromLocal8Bit(msg));for(int j=0;j<socketlist.count();j++){socketlist.at(j)->write(msg);}}}
}

运行截图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/30229.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信息安全技术基础知识-经典题目

【第1题】 1.在信息安全领域&#xff0c;基本的安全性原则包括机密性(Confidentiality)、完整性(Integrity)和 可用性(Availability)。机密性指保护信息在使用、传输和存储时 (1) 。信息加密是保证系统机密性的常用手段。使用哈希校验是保证数据完整性的常用方法。可用性指保证…

边学边赛拿冠军!北邮学子勇夺昇腾AI原生创新算子挑战赛金奖

导读 如何从零开始学习算子开发&#xff1f;昇腾AI原生创新算子挑战赛冠军“法宝”大揭秘。 “0xCCCCCCCC团队夺冠&#xff01;” 2024年5月9日&#xff0c;在首届昇腾AI原生创新算子挑战赛S1赛季决赛现场&#xff0c;来自北京邮电大学0xCCCCCCCC团队的孙明志和梁昊骞以总分第…

金蝶BI方案与奥威BI:智能、高效的数据分析组合

在当今数据驱动的时代&#xff0c;企业对于快速、准确、全面的数据分析需求日益增长。金蝶BI方案和奥威BI SaaS平台正是为满足这一需求而精心打造的智能数据分析工具。 方案见效快 金蝶BI方案以其高效的数据处理能力&#xff0c;能够快速地将海量数据转化为有价值的信息。通过…

uniapp 微信小程序自定义分享图片

场景&#xff1a;微信小程序用户&#xff0c;点击小程序里商品的分享按钮时&#xff0c;想要不同的商品展示不用的分享内容&#xff0c;比如分享图片上展示商品的图片、价格等信息。分享的UI图如下&#xff1a; 实现方法&#xff1a; 1. 分享按钮&#xff1a;<button open-…

Debian 时间同步处理

1.NTP授时的基本框架 时间同步在Debian环境使用NTP服务实现&#xff0c;在Debian平台&#xff0c;NTP是一个双向的协议——Debian&#xff0c;linux在设计时与git类似&#xff0c;有去中心化的考量。一些拥有固定IP的Debian设备&#xff0c;Debian鼓励这些用户加入NTP 服务池&…

Linux C++

1.Linux环境配置 1.安装C和C的编译器 yum -y install gcc* // centos72.升级编译器 升级软件包&#xff1a; yum -y install centos-release-scl devtoolset-8-gcc*启用软件包&#xff1a; echo "source /opt/rh/devtoolset-8/enable" >>/etc/profile # 每次…

计算机顶级会议和顶级期刊

顶级会议 国际计算机设计会议&#xff08;ICCD&#xff09;&#xff1a;由国际电气与电子工程师协会&#xff08;IEEE&#xff09;主办&#xff0c;是计算机体系结构领域的国际顶级会议之一&#xff0c;已经成功举办四十余届。 NeurIPS&#xff1a;全称神经信息处理系统大会&a…

电感(线圈)具有哪些基本特性

首先&#xff0c;电感&#xff08;线圈&#xff09;具有以下基本特性&#xff0c;称之为“电感的感性电抗” ?①直流基本上直接流过。 ?②对于交流&#xff0c;起到类似电阻的作用。 ?③频率越高越难通过。 下面是表示电感的频率和阻抗特性的示意图。 在理想电感器中&#…

centos7安装FTP服务器

目录 实验背景 一、配置yum源 1、本地yum 2、阿里云yum 二、安装vsftpd 1、安装vsftp服务 2、启动服务并设置开机自启动 3、开放防火墙和SELinux 三、创建用户和FTP目录 1、创建文件目录并配置权限 2、创建ftp组以及用户 四、修改vsftpd.conf文件 1、备份 vsftpd.c…

@Transactional注解可能会失效的情况有以下几种:

Transactional注解可能会失效的情况有以下几种&#xff1a; 在非public方法上使用&#xff1a;Spring的事务管理是基于代理的&#xff0c;如果在非public方法上使用Transactional注解&#xff0c;代理对象将无法拦截到该方法的调用&#xff0c;导致事务注解失效。 异常被捕获并…

C/C++ vector模拟实现

模拟实现&#xff1a; 框架 namespace yx {template<class T>class vector{public:typedef T* iterator;private:iterator _start;iterator _finish;iterator _end_of_storage;}; } 这里我们声明定义不分离 reverse() 新开一个空间&#xff0c;拷贝数据&#xff0c;然…

Mybatis相关知识

什么是Mybatis mybatis是JAVA领域中的一款持久化框架。它的主要功能是让我们轻松的在JAVA对象和数据库之间建立联系。通过这种联系&#xff0c;开发者可以很方便的存储、检索和操作数据。以下是Mybatis和其他ORM框架相比的一些特点&#xff1a; Mybatis强调对SQL的可控性&…

代码随想录训练营第十三天

第一题&#xff1a; 原题链接&#xff1a;144. 二叉树的前序遍历 - 力扣&#xff08;LeetCode&#xff09; 思路1&#xff1a;递归法 当传递下去的节点为空的时候&#xff0c;返回。 前序遍历的话顺序是根左右&#xff0c;因此一来变先将节点的值添加进res数组中&#xff0…

如何给mysql创建组合索引并分析索引命中(官方校正版)

MySQL 可以使用多列索引来执行测试索引中所有列的查询&#xff0c;或者仅测试第一列、前两列、前三列等的查询。如果您在索引定义中以正确的顺序指定列&#xff0c;则单个复合索引可以加速同一表上的几种查询。 MySQL 可以创建复合索引&#xff08;即在多个列上建立索引&#x…

HTML星空特效

目录 写在前面 完整代码 代码分析 运行效果 系列文章 写在后面 写在前面 100行代码实现HTML星空特效。 完整代码 全部代码如下。 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&g…

【Redis】基于Redission实现分布式锁(代码实现)

目录 基于Redission实现分布式锁解决商品秒杀超卖的场景&#xff1a; 1.引入依赖&#xff1a; 2.加上redis的配置&#xff1a; 3.添加配置类&#xff1a; 4.编写代码实现&#xff1a; 5.模拟服务器分布式集群的情况&#xff1a; 1.右键点击Copy Configuration 2.点击Modi…

怎么投资中证全指证券公司指数?

中证全指证券公司指数的代码是399975&#xff0c;有50只成分股&#xff0c;几乎包含了市场上所有主要的证券公司&#xff0c;算是指数基金中投资证券行业的不二选择。 根据天天基金的数据显示&#xff0c;市面上有31只跟踪该指数的基金&#xff0c;规模最大的是南方中证全指证…

【Java面试】二十二、JVM篇(下):JVM参数调优与排查

文章目录 1、JVM的参数在哪里设置2、常见的JVM调优参数有哪些3、常见的JVM调优工具有哪些4、Java内存泄漏的排查思路5、CPU飙高的排查思路 1、JVM的参数在哪里设置 war包部署&#xff0c;在tomcat中设置&#xff0c;修改TOMCAT_HOME/bin/catalina.sh 文件 jar包启动&#xff0…

jpg格式图片无法打开可以修复吗?有哪些方法?

JPG的图片打不开怎么办呢&#xff1f;当JPG图片打不开的时候&#xff0c;我们需要先了解下具体的原因&#xff0c;是因为格式不支持&#xff0c;还是因为图片文件损坏。不同的原因&#xff0c;解决的方法也会不同&#xff0c;比如图片损坏&#xff0c;我们就需要对图片修复处理…

web爬虫笔记:js逆向案例九(某多多 anti_content参数)补环境流程

web爬虫笔记:js逆向案例九(某多多 anti_content参数)补环境流程 一、目标网站:aHR0cHM6Ly9tb2JpbGUueWFuZ2tlZHVvLmNvbS8= 二、接口分析 1、快速定位加密位置(通过搜索/cells/hub/v3快速定位到加密js文件) 2、通过分析可知&#