国庆作业5

QT实现TCP服务器客户端的搭建

服务器代码:

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);server = new QTcpServer(this);connect(server,&QTcpServer::newConnection,this,&Widget::newConnection_slot);
}Widget::~Widget()
{delete ui;
}//启动按钮的槽函数
void Widget::on_startBtn_clicked()
{quint16 port=ui->portEdit->text().toUInt();if(server->listen(QHostAddress::Any,port)){QMessageBox::information(this,"失败","监听失败");return ;}else{QMessageBox::information(this,"成功","服务器监听成功");return ;}
}
void Widget::newConnection_slot()
{qDebug()<<"您有新的客户端请求";QTcpSocket *s=server->nextPendingConnection();clientList.push_back(s);connect(s,&QTcpSocket::readyRead,this,& Widget::readyRead_slot);
}
void Widget::readyRead_slot()
{qDebug("有新消息发来了");for(int i=0;i<clientList.size();i++){if(clientList[i]->state()==0){clientList.removeAt(i);}}for(int i=0;i<clientList.size();i++){if(clientList[i]->bytesAvailable()!=0){QByteArray msg=clientList[i]->readAll();ui->msgWidget->addItem(QString::fromLocal8Bit(msg));for(int j=0;j<clientList.size();j++){clientList[j]->write(msg);}}}
}

客户端代码:

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);socket =new QTcpSocket(this);connect(socket,&QTcpSocket::connected,this,&Widget::connected_slot);connect(socket,&QTcpSocket::readyRead,this,&Widget::readyRead_slot);connect(socket,&QTcpSocket::disconnected,this,&Widget::disconnected_slot);
}Widget::~Widget()
{delete ui;
}//连接服务器按钮
void Widget::on_connectBtn_clicked()
{userName =ui->userNameEdit->text();QString ip=ui->ipEdit->text();quint16 port = ui->portEdit->text().toUInt();socket->connectToHost(ip,port);
}void Widget::connected_slot()
{QMessageBox::information(this,"成功","您已经成功进入聊天室");QString msg=userName + ":进入聊天室";socket->write(msg.toLocal8Bit());
}void Widget::readyRead_slot()
{QByteArray msg=socket->readAll();ui->msgWidget->addItem(QString::fromLocal8Bit(msg));
}void Widget::on_sendBtn_clicked()
{QString msg=userName+":"+ui->msgedit->text();socket->write(msg.toLocal8Bit());ui->msgedit->clear();
}void Widget::on_disconnectBtn_clicked()
{QString msg =userName+":我走了哈,我不打扰";socket->write(msg.toLocal8Bit());socket->disconnectFromHost();
}void Widget::disconnected_slot()
{QMessageBox::information(this,"提示","退出成功");
}

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

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

相关文章

新手学习笔记-----⽂件操作

目录 1. 为什么使⽤⽂件&#xff1f; 2. 什么是⽂件&#xff1f; 2.1 程序⽂件 2.2 数据⽂件 2.3 ⽂件名 3. ⼆进制⽂件和⽂本⽂件&#xff1f; 4. ⽂件的打开和关闭 4.1 流和标准流 4.1.1 流 4.1.2 标准流 4.2 ⽂件指针 4.3 ⽂件的打开和关闭 5. ⽂件的顺序读写 …

学信息系统项目管理师第4版系列17_干系人管理

1. 项目经理和团队管理干系人的能力决定着项目的成败 2. 干系人满意度应作为项目目标加以识别和管理 3. 发展趋势和新兴实践 3.1. 识别所有干系人&#xff0c;而非在限定范围内 3.2. 确保所有团队成员都涉及引导干系人参与的活 3.3. 定期审查干系人群体&#xff0c;可与单…

全志ARM926 Melis2.0系统的开发指引④

全志ARM926 Melis2.0系统的开发指引④ 编写目的7. 固件打包脚本7.1.概要描述7.2.术语定义7.2.1. makefile7.2.2. image.bat 7.3.工具介绍7.4.打包步骤7.4.1. makefile 部分7.4.2. image.bat 部分 7.5.问题与解决方案7.5.1. 固件由那些文件构成7.5.2. melis100.fex 文件包含什么…

【动态规划】96. 不同的二叉搜索树

96. 不同的二叉搜索树 解题思路 base case dp[0] 1 一个空节点 也是一颗二叉树状态&#xff1a;dp[i] 对于每一个节点i 作为根节点 那么它的二叉搜索树的数量有多少外层循环&#xff1a;遍历所有的可能节点数目 内存循环遍历所有左右子树组合情况 class Solution {public i…

Greenplum7一键安装

2023年9月底&#xff0c;Greenplum 发布了7.0.0版本&#xff0c;并于2023年10月03日开放了安装部署说明文档&#xff0c;现在快速尝鲜版的docker一键部署方式如下&#xff1a; mkdir /data/gpdb docker run -d --name greenplum -p 15432:5432 -v /data/gpdb:/data inrgihc/g…

PyQt5+Qt设计师初探

在上一篇文章中我们搭建好了PyQt5的开发环境&#xff0c;打铁到趁热我们基于搭建好的环境来简单实战一把 一&#xff1a;PyQt5包模块简介 PyQt5包括的主要模块如下。 QtCore模块——涵盖了包的核心的非GUI功能&#xff0c;此模块被用于处理程序中涉及的时间、文件、目录、数…

水浒传数据集汇总

很喜欢《水浒传》&#xff0c;希望能将它融入我的考研复习中&#xff0c;打算用水浒传数据来贯穿数据结构的各种知识&#xff0c;先汇总下找到的数据集 天池上看到的一个水浒传文本数据集&#xff1a;https://tianchi.aliyun.com/dataset/36027 Hareric/masterworkNLP: 基于社…

Go基础之变量和常量

Go基础之变量和常量 文章目录 Go基础之变量和常量一. 标识符、关键字、内置类型和函数1.1 标识符1.2 关键字1.3 保留字1.4 内置类型1.4.1 值类型&#xff1a;1.4.2 引用类型&#xff1a;(指针类型)1.5 内置函数1.6 内置接口error 二.Go变量命名规范2.1 采用驼峰体命名2.2 简单、…

多层神经网络和激活函数

多层神经网络的结构 多层神经网络就是由单层神经网络进行叠加之后得到的&#xff0c;所以就形成了层的概念&#xff0c;常见的多层神经网络有如下结构&#xff1a; 1&#xff09;输入层&#xff08;Input layer&#xff09;&#xff0c;众多神经元&#xff08;Neuron&#xff…

ZXing - barcode scanning library for Java, Android

官网 GitHub - zxing/zxing: ZXing ("Zebra Crossing") barcode scanning library for Java, Android 使用说明 Getting Started Developing zxing/zxing Wiki GitHub 参考 Android中二维码的扫描与生成&#xff08;zxing库&#xff09;_android 二维码生成-C…

2023-09-28 monetdb-databae的概念和作用-分析

摘要: 每个数据库对于db,schema以及user,role都有一套自己的设计, 不同数据库间对于相同名字的东西例如database和schema可以说南辕北辙, 例如mysql中schema其实是database的同义词. 本文分析monetdb的database的概念和作用 database的概念和作用: 和mysql的database完全不同…

【Rust】文件系统

目录 一、读取文件的字符串行 二、避免读取写入同一文件 三、使用内存映射随机访问文件 四、过去 24 小时内修改过的文件名 五、查找给定路径的循环 六、递归查找重名文件 七、使用给定断言递归查找所有文件 八、跳过隐藏文件遍历目录 九、在给定深度的目录&#xff0…

OpenAI 大模型生态

文章目录 图像多模态大模型语音识别模型文本 Embedding 模型审查模型编程大模型OpenAI 模型列表 https://platform.openai.com/docs/models/overview 你也可以在这里查看,可以调用的模型: https://platform.openai.com/account/rate-limits 图像多模态大模型 图像多模态大模…

学会安装Redis数据库到服务器或计算机(Windows版)

Redis 是一个基于内存的开源数据库系统&#xff0c;被广泛应用于 Web 应用、消息队列、缓存、实时统计等领域。它支持多种数据结构&#xff0c;包括字符串、哈希表、列表、集合、有序集合等&#xff0c;并提供了多种操作命令。 Redis 的特点如下&#xff1a; 内存存储&#xf…

spring security(二)--授权

零.前情提要 这篇文章主要借鉴B站三更大大关于spring security的教程&#xff0c;这篇文章的大部分内容也来自于那个教程&#xff0c;写这个的主要目的是记录加强印象&#xff0c;总结&#xff0c;并且在文章中我也有穿插自己的想法。 前面的文章【spring security教程&#…

一文读懂UTF-8的编码规则

之前写过一篇文章“一文彻底搞懂计算机中文编码”里面只是介绍了GB2312编码知识&#xff0c;关于utf8没有涉及到&#xff0c;经过查询资料发现utf8是对unicode的一种可变长度字符编码&#xff0c;所以再记录一下。 现在国家对于信息技术中文编码字符集制定的标准是《GB 18030-…

sheng的学习笔记-【中英】【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第四周测验

课程1_第4周_测验题 目录&#xff1a;目录 第一题 1.在我们的前向传播和后向传播实现中使用的 “缓存” 是什么&#xff1f; A. 【  】它用于在训练期间缓存成本函数的中间值。 B. 【  】我们用它将在正向传播过程中计算的变量传递到相应的反向传播步骤。它包含了反向传…

MySQL存储引擎:选择合适的引擎优化数据库性能

什么是存储引擎&#xff1f; 在MySQL中&#xff0c;存储引擎是数据库管理系统的一部分&#xff0c;负责数据的存储、检索和管理。 常见的MySQL存储引擎 InnoDB InnoDB是MySQL的默认存储引擎&#xff0c;它支持事务和行级锁定&#xff0c;适用于大多数在线事务处理&#xff…

html 边缘融合加载

html 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>边缘融合加载</title><style>* {margin: 0;padding: 0;box-sizing: border-box;}body {height: 100vh;padding-bottom: 80px;b…

GridSearchCV 工具介绍

目录 1、定义 2、工作流程 3、示例代码 4、总结 1、定义 GridSearchCV 是一个用于超参数调优的工具&#xff0c;它在给定的参数网格中执行交叉验证&#xff0c;以确定最佳的参数组合。通过穷举搜索&#xff08;exhaustive search&#xff09;来寻找最佳参数&#xff0c;即…