文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-09-21 12:32

关注

目录

1、简介

2 、TCP通信流程

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

4、QT端设计

4.1项目建立

 4.2 TCP网络程序设计

 4.2.1 QT界面设计

 4.2.2 UI布局

 4.2.3 控件重命名

 5、widget.h

6、widget.c


1、简介

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

2 、TCP通信流程

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

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

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

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

4、QT端设计

4.1项目建立

 2、

 3、

 4、

 5、

 6、

 4.2 TCP网络程序设计

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

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

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

QT       += core gui network

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

#include #include #include 

 4.2.1 QT界面设计

如下所示:

 2、

 3、

 4、

 5、

 6、

 4.2.2 UI布局

 整体垂直布局

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

 4.2.3 控件重命名

 

 5、widget.h

#ifndef WIDGET_H#define WIDGET_H#include #include #include #include namespace Ui {class Widget;}class Widget : public QWidget{    Q_OBJECTpublic:    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());}

来源地址:https://blog.csdn.net/weixin_44597885/article/details/130200219

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯