qt linux 聊天室,Qt网络聊天室客户端
原创 DeRoy 2020-08-15
收录于话题
#QT项目实战
11个
点击蓝字关注我们
基于Qt网络编程客户端
QTcpSocketQTcpSocket 类提供一个TCP套接字TCP是一个面向连接,可靠的的通信协议,非常适合于连续不断的数据传递
QTcpSocket 是QAbstractSocket类非常方便的一个子类,让你创建一个TCP连接和数据流交流。
QTcpSocket 信号:readyRead()//有数据发送过来时触发该信号
disconnected()//socket->close()触发disconnected()信号,客户端服务端都触发
配置
pro文件添加QT += network
Public
connectToHost()连接服务器,参数为服务器地址和端口号
waitForConnected设置等待连接,设置超时时间QString ipAddressStr = ui->lineEditAddress->text();
quint16 port = ui->lineEditPort->text().toInt();
socket->connectToHost(ipAddressStr, port);
if(socket->waitForConnected(3000))
{
//连接成功
qDebug() << "connect secess";
}
else
{
qDebug() << socket->errorString();
return;
}
SIGNAL
disconnected()
Socket close信号,当socket执行close函数之后出发信号connect(socket, SIGNAL(disconnected()),this,SLOT(disconnectedSlot()));//客户端断开连接
readyRead()当服务端有数据发送过来的时候触发该信号connect(socket, SIGNAL(readyRead()),this, SLOT(readyReadSlot())); //接收消息QByteArray dataBa = socket->readAll();
UI设计
客户端UI设计
TcpClient项目训练
widget.h#ifndef WIDGET_H
#define WIDGET_H
#include
#include
#include
#include
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void on_pushButtonConnect_clicked();
void disconnectedSlot();
void readyReadSlot();
void on_pushButtonSend_clicked();
private:
Ui::Widget *ui;
QTcpSocket *socket;
bool socketState;
};
#endif // WIDGET_H
widget.cpp#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
socket = new QTcpSocket;
socketState = false;
connect(socket, SIGNAL(disconnected()),this, SLOT(disconnectedSlot())); //客户端断开连接
connect(socket, SIGNAL(readyRead()),this, SLOT(readyReadSlot())); //接收消息
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButtonConnect_clicked(){
QString ipAddressStr = ui->lineEditAddress->text();
quint16 port = ui->lineEditPort->text().toInt();
if(!socketState)
{
socket->connectToHost(ipAddressStr, port);
if(socket->waitForConnected(3000))
{
qDebug() << "Connect2Server OK";
ui->pushButtonConnect->setText("断开连接");
socketState = true;
}
else
{
qDebug() << socket->errorString();
return;
}
}
else
{
socket->close();
ui->pushButtonConnect->setText("连接");
socketState = false;
}
}
void Widget::disconnectedSlot(){
qDebug()<
}
void Widget::readyReadSlot(){
QByteArray dataBa = socket->readAll();
QString str = QString(QDateTime::currentDateTime().toString("yyyy.MM.dd hh:mm:ss ddd")) +
":Recv\n" + str.fromLocal8Bit(dataBa.data()); //本地GBK转Unicode 解决乱码
ui->textBrowserRecv->append(QString(str)); //送显示
}
void Widget::on_pushButtonSend_clicked(){
QString dataStr = ui->textEditSend->toPlainText();
//QByteArray data = dataStr.toUtf8(); //发送UTF编码数据
QByteArray data = dataStr.toLocal8Bit(); //发送本地字符(GBK)
if(socket->isOpen() && socket->isValid())
{
socket->write(data);
}
QString str = QString(QDateTime::currentDateTime().toString("yyyy.MM.dd hh:mm:ss ddd")) +
":Recv\n" + str.fromLocal8Bit(data.data()); //本地GBK转Unicode 解决乱码
ui->textBrowserRecv->append(QString(str)); //送显示
}
qt linux 聊天室,Qt网络聊天室客户端相关推荐
- qt客户端显示服务器发送的图片不显示,使用Qt将一系列图片通过网络发送到客户端动态显示...
<使用Qt将一系列图片通过网络发送到客户端动态显示>由会员分享,可在线阅读,更多相关<使用Qt将一系列图片通过网络发送到客户端动态显示(8页珍藏版)>请在人人文库网上搜索. 1 ...
- Linux C多人网络聊天室
经过好几天的日夜奋斗,总算把这个聊天室给做出来了,虽然说不上多好,但也是这几天从早到晚劳动的成功,所以就写这篇博文来记录一下啦.别的不敢说,确保能用就是了,完整代码在最后哦~ 当然啦,如果有幸被转发, ...
- Linux C/TCP多线程网络聊天室
多线程TCP网络聊天室 我们都知道TCP是一种基于连接的传输协议,使用多线程来实现其实步骤很简单. 首先说明一下项目:服务端开启后,直接运行客户端可以加入聊天室,同时其他客户端可以接收到某某客户端进入 ...
- linux 移植qt,Linux下移植QT(2)---移植QT
准备:ubantu12.04 内核 3.0.8(最好用同样的内核,3.2.0时没成功) 交叉编译工具:arm-cortex_a8-linux-gnueabi-gcc-4.4.6 QT版本5.4.2 ...
- qt linux 多语言,Qt跨平台(window、linux)实现多语言
在项目中,实现多语言基本山是基本需求,虽然Qt支持跨平台,但在linux和windows上实现多语言的方式还是细微区别的,废话不多说,直接进入主题吧. Qt实现多语言,是用过QTranslator加载 ...
- qt linux 鼠标事件,QT学习笔记5:QMouseEvent鼠标事件简介
一.QMouseEvent的详细描述 首先请注意,Qt中的QMouseEvent一般只涉及鼠标左键或右键的单击.释放等操作,而对鼠标滚轮的响应则通过QWheeEvent来处理. QMouseEvent ...
- ubuntu qt linux 下载文件,Qt ------ linux(ubuntu) 下用 linuxdeployqt 打包发布程序
https://github.com/probonopd/linuxdeployqt/releases github上提供了两种安装linuxdeployqt的方法,分别是直接下载编译好的安装包安装, ...
- linux强行卸载qt,Linux下卸载QT SDK
unbuntu下卸载QT 方法一: you can remove it like this, those developers should add this somewhere ! like nex ...
- qt linux cpu id,Qt獲取CPU編號和硬盤序列號
windows下執行命令除了用cmd之外,還有個東西叫WMIC,非常強大,可以通過他獲取很多信息,包括硬件信息. QString frmMain::getWMIC(const QString & ...
- 基于linux网络聊天室的设计,参考基于linux网络聊天室的设计.doc
参考基于linux网络聊天室的设计 长沙理工大学<高级操作系统>课程设计报告学 院 计算机与通信工程 专 业 计算机科学与技术 班 级 学 号 学生姓名 指导教师 课程成绩 完成日期 课程 ...
最新文章
- 分辨5线单极性步进电机接头
- java程序设计 徐红_Java程序设计-徐红 王灿
- java 内存模型堆和本地方法
- h3c 路由器 刷第三方固件_图文版*许迎果 第201期 双11路由器型号推荐之刷机路由篇...
- How to use price determination in Quotation scenario
- 盘点:最值得托付终身的星座
- mysql复制主从集群搭建
- 软件发布版本命名规则
- Python之subprocess模块
- 金三银四大厂面经总结,mysql创建视图的sql语句
- Linux现在已主导Azure
- 网络安全实战之靶场渗透技术
- 软考软件设计师本人成功备考经验分享
- imdb数据集电影评论分类
- 电子邮件链接格式html主题,html创建电子邮件链接的方法
- 网络通信中 TCP 产生 RST 的三个条件分析
- 2021-10-18墨画子卿第一章
- 现代信号处理笔计 4 线性估计
- FrankenUPS Hack将服务器UPS变成整机UPS
- Docker学习之路04:创建定制Nginx镜像
热门文章
- 按群计数10以内_大班数学活动:按群计数
- python数组加入新元素_Python之list添加新元素、删除元素、替换元素
- 接口使用jwt返回token_JWT实现token验证
- wordpress 表格文字对齐_Word文字对齐还用空格键?OUT了,这3个文字对齐方式你值得拥有!...
- python目录及文件_零基础小白必看:python基本操作-文件、目录及路径
- oracle ora-24247 ACL,ORACLE 11G 存储过程发送邮件(job),ORA-24247:网络访问被访问控制列表 (ACL) 拒绝...
- 系统接口对接的进度工作应该谁来干_项目的交付进度总是延迟,项目经理找了很久才发现是这4类原因...
- python调用java方法_python加载和使用java的类的方法
- arm-linux-gcc编译gtk程序,【又7】Arm 版GTK编译
- 在Windows系统安装Nodejs