QT网络通信-服务器(一)

简介: QT网络通信-服务器(一)

1、简介

网络有TCP和UDP。本文主要通过QT完成TCP网络设计,通过ESP8266与单片机进行通讯。


2 、TCP通信流程


ea53af1dc1c447f8bacea0e18b017ad4.png


3、基于TCP通信所需要的类

QTcpSever 服务器类,用于监听客户端连接以及和客户端建立连接。


QTcpSocket 通信的套接字类,客户端、服务器端都需要使用。


QTcpSever、QTcpSocket都属于网络模块network。


4、QT端设计

4.1项目建立

1、


24d869ace2a249e9b4aa2d8c908260ae.png


2、


a5989c58c6be4d2a805c61bbb6dce6da.png


3、


73601ba7a4e04646881610797b7955fb.png


4、


e800cef63e2d4433906b1e8d6f3f926b.png


5、


d954873bdb764cdca0b12ed92073b102.png


6、


0da5dda738e842be8c4de2505702882b.png


7、


5ebfc9f3cd2e486bb5c64be296467ce7.png


4.2 TCP网络程序设计

QT提供了QTcpServer类,可以直接实例化一个客户端,可在help中索引如下:

The QTcpServer class provides a TCP-based server. More...
Header:     #include <QTcpServer> 
qmake:      QT += network
Inherits:       QObject

首先在在.pro文件中添加QT += network才可以进行网络编程



QT       += core gui network

接着在widget.h中添加所需头文件,头文件如下所示:

#include <QTcpServer>
#include <QTcpSocket>
#include <QNetworkInterface>

4.2.1 QT界面设计

如下所示:

1、



2、



3、



4、



5、



6、



4.2.2 UI布局



整体垂直布局



对于接收框设置成只读,如下所示:



4.2.3 控件重命名


5、widget.h

#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QTcpServer>
#include <QTcpSocket>
#include <QNetworkInterface>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
    Q_OBJECT
public:
    explicit Widget(QWidget *parent = nullptr);
    ~Widget();
    QTcpServer *tcpserver;//声明一个QTcpserver的对象,用于监听
    QTcpSocket *tcpsocket;//创建服务器的套接字,用于与客户端进行通信
private slots:
    void newConnection_Slot();
    void readyRead_Slot();
    void on_open_Button_clicked();
    void on_close_Button_clicked();
    void on_send_Button_clicked();
private:
    Ui::Widget *ui;
};
#endif // WIDGET_H


6、widget.c

#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    tcpserver = new QTcpServer(this);
    tcpsocket = new QTcpSocket(this);
    //当服务器发现有人要来连接时,就会发出newconnection 的信号,从而触发槽函数newConnection_Slot()(自行编写的槽函数)
    connect(tcpserver,SIGNAL(newConnection()),this,SLOT(newConnection_Slot()));
}
//建立接收客户端连接的槽函数,有人连接就触发这个槽函数
void Widget::newConnection_Slot()
{
     //获取这个服务器sserver与客户端通信的套接字
    tcpsocket = tcpserver->nextPendingConnection();
    connect(tcpsocket,SIGNAL(readyRead()),this,SLOT(readyRead_Slot()));
}
void Widget::readyRead_Slot()
{
    QString buf;
    buf = tcpsocket->readAll();
    ui->rece_Edit->appendPlainText(buf);
}
Widget::~Widget()
{
    delete ui;
}
void Widget::on_open_Button_clicked()
{
    //服务端点击启动服务器,服务器就开始监听
    //监听----------启动服务器
    //QHostAddress::Any 地址,接纳所有的地址
    //端口号  ui->sportEdit->text()获得输入的字符串,转换成无符号短整型
    tcpserver->listen(QHostAddress::Any,ui->port_line->text().toUShort());
}
void Widget::on_close_Button_clicked()
{
    tcpserver->close();
}
void Widget::on_send_Button_clicked()
{
    tcpsocket->write(ui->send_line->text().toLocal8Bit().data());
}
相关文章
|
3月前
|
机器学习/深度学习 人工智能 运维
企业内训|LLM大模型在服务器和IT网络运维中的应用-某日企IT运维部门
本课程是为某在华日资企业集团的IT运维部门专门定制开发的企业培训课程,本课程旨在深入探讨大型语言模型(LLM)在服务器及IT网络运维中的应用,结合当前技术趋势与行业需求,帮助学员掌握LLM如何为运维工作赋能。通过系统的理论讲解与实践操作,学员将了解LLM的基本知识、模型架构及其在实际运维场景中的应用,如日志分析、故障诊断、网络安全与性能优化等。
115 2
|
1月前
|
缓存 负载均衡 监控
HTTP代理服务器在网络安全中的重要性
随着科技和互联网的发展,HTTP代理IP中的代理服务器在企业业务中扮演重要角色。其主要作用包括:保护用户信息、访问控制、缓存内容、负载均衡、日志记录和协议转换,从而在网络管理、性能优化和安全性方面发挥关键作用。
69 2
|
2月前
|
弹性计算 监控 数据库
制造企业ERP系统迁移至阿里云ECS的实例,详细介绍了从需求分析、数据迁移、应用部署、网络配置到性能优化的全过程
本文通过一个制造企业ERP系统迁移至阿里云ECS的实例,详细介绍了从需求分析、数据迁移、应用部署、网络配置到性能优化的全过程,展示了企业级应用上云的实践方法与显著优势,包括弹性计算资源、高可靠性、数据安全及降低维护成本等,为企业数字化转型提供参考。
72 5
|
3月前
|
存储 安全 数据可视化
提升网络安全防御有效性,服务器DDoS防御软件解读
提升网络安全防御有效性,服务器DDoS防御软件解读
85 1
提升网络安全防御有效性,服务器DDoS防御软件解读
|
2月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
1101 2
|
3月前
|
Kubernetes 应用服务中间件 nginx
搭建Kubernetes v1.31.1服务器集群,采用Calico网络技术
在阿里云服务器上部署k8s集群,一、3台k8s服务器,1个Master节点,2个工作节点,采用Calico网络技术。二、部署nginx服务到k8s集群,并验证nginx服务运行状态。
1245 1
|
3月前
|
网络协议 Java API
【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
84 2
|
3月前
|
存储 网络协议 Java
【网络】UDP回显服务器和客户端的构造,以及连接流程
【网络】UDP回显服务器和客户端的构造,以及连接流程
74 2
|
3月前
|
存储 网络协议 Java
【网络】UDP和TCP之间的差别和回显服务器
【网络】UDP和TCP之间的差别和回显服务器
94 1
|
3月前
|
安全 区块链 数据库

热门文章

最新文章