#QT(TCP网络编程-服务端)

1.IDE:QTCreator


2.实验:编写一个tcp服务端

QTcpsever

QTcpsocket


3.记录:

(1)先搭建界面

(2)服务端代码

a.           pro

QT       += core gui network

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++17

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    widget.cpp

HEADERS += \
    widget.h

FORMS += \
    widget.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

b.               widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTcpServer>       //加入头文件
#include <QTcpSocket>
QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

    QTcpServer *tcpsever;    //定义两个指针对象
    QTcpSocket *tcpsocket;
private slots:
    void on_openserver_pb_clicked();
    void new_conneciton_slot();   //server新的连接处理关联函数
    void readyRead_slot();       //socket准备读关联函数
    void on_closeserver_pb_clicked();

    void on_send_pb_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

c.           widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    tcpsever = new QTcpServer(this);    //指针赋值
    tcpsocket = new QTcpSocket(this);

    connect(tcpsever,SIGNAL(newConnection()),this,SLOT(new_conneciton_slot()));   //新的连接函数关联
}

Widget::~Widget()
{
    delete ui;
}

void Widget::new_conneciton_slot()    //新的连接处理函数
{
    tcpsocket=tcpsever->nextPendingConnection();
    connect(tcpsocket,SIGNAL(readyRead()),this,SLOT(readyRead_slot()));    //关联socket准备读函数
}
void Widget::readyRead_slot()        //socket准备读关联函数
{
    QString receive_buff;     //定义一个接受数组
    receive_buff=tcpsocket->readAll();    //读取所有接受的内容
    ui->receive_line->appendPlainText(receive_buff);   //在接收区显示接收到的内容
}

void Widget::on_openserver_pb_clicked() //打开服务器按钮按下处理函数
{
    tcpsever->listen(QHostAddress::Any,ui->com_number->text().toUInt());    //监听主机上的所有端口,将端口号转为无符号整型
}


void Widget::on_closeserver_pb_clicked() //关闭服务器按钮按下处理函数
{
    tcpsever->close();
}


void Widget::on_send_pb_clicked()       //当发送按钮按下时处理函数
{
    tcpsocket->write(ui->send_line->text().toLocal8Bit().data());
}


4.代码

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024关于idea激活码报This license xxxx has been suspended

HOSTS文件中增加 0.0.0.0 www.jetbrains.com 0.0.0.0 account.jetbrains.com 然后

7、Linux-防火墙和配置静态ip

一、防火墙&#xff08;防火墙服务名firewalld&#xff09; 防火墙配置命令&#xff1a;firewall-cmd firewall-cmd --help&#xff1a;防火墙帮助firewall-cmd --state&#xff1a;查看防火墙状态firewall-cmd --zonepublic --list-ports&#xff1a;查看所有打开的端口firew…

三大数学软件之Maple

相信钻研数学的小伙伴们对MATLAB、SPSS这样的重量级软件并不陌生&#xff0c;这些大型软件能求解复杂的运算&#xff0c;解决各领域的数学问题。今天博主为大家带来了一款名不见经传的软件——Maple&#xff0c;作为三大数学软件之一&#xff0c;Maple同样拥有不菲的计算能力&a…

医院电动床脚踏开关的机械强度测试检测

医院电动床是现代医疗设备中不可或缺的一部分。它们提供了病人安全舒适的床位&#xff0c;并具备调节床位高度和角度的功能。然而&#xff0c;在日常使用过程中&#xff0c;医院电动床的各个部件可能会受到一定程度的磨损和摩擦。因此&#xff0c;确保电动床的每个关键部件的机…

TRIZ理论破解重量与强度难题:材料科学的革命性突破!

在机械结构设计的领域里&#xff0c;工程师们常常面临着一个难以抉择的问题&#xff1a;如何在保证结构强度的同时&#xff0c;尽可能地减轻重量&#xff1f;传统的惯性思维可能会让我们倾向于增加材料的厚度来增强结构的稳固性&#xff0c;但这样一来&#xff0c;结构的重量也…

SpringBoot集成flink

Flink是一个批处理和流处理结合的统一计算框架&#xff0c;其核心是一个提供了数据分发以及并行化计算的流数据处理引擎。 最大亮点是流处理&#xff0c;最适合的应用场景是低时延的数据处理。 场景&#xff1a;高并发pipeline处理数据&#xff0c;时延毫秒级&#xff0c;且兼具…

2024软考大改革!一年只能考一次!

软考办2024年软考考试安排刚刚发布了&#xff01;变化很大&#xff01; 信息系统项目管理师上半年考、系统集成项目管理工程师下半年考。 很多科目一年只考一次&#xff01;&#xff01;&#xff01; 报名时间&#xff1a; 上半年&#xff1a;2024年3月18日开始&#xff0c;…

蓝桥杯备赛 day2 | 4. 付账问题 5. 数字三角形

付账问题&#xff0c;关键是要了解整型的范围&#xff0c;确定获取输入数据的变量类型 需要注意的是int的十进制范围-32768 ~ 32767&#xff0c;那么我们可以知道&#xff0c;人数n是可以用int来装的&#xff0c;需付款数S应该是long long&#xff0c;获取的每个人初始钱数也应…

uniapp+vue3+vites使用lime-echart问题记录

问题记录 1.vue3使用echarts,H5和微信小程序兼容问题 1.vue3使用echarts,H5和微信小程序兼容问题 问题描述&#xff0c;正常使用echarts&#xff0c;H5正常&#xff0c;小程序报错 报错信息如下 解决方案&#xff1a; 注意要点一&#xff1a;vue3需要使用esm文件 地址&#x…

JVM类加载机制以及双亲委派模型的介绍

目录 1.类加载介绍 2.具体步骤 2.1加载 2.2验证 2.3准备 2.4解析 2.5初始化 3.加载过程中的策略-双亲委派模型 1.类加载介绍 类加载,指的是Java进程在运行的时候,把.class文件从硬盘读取到内存,并进行一系列校验解析的过程. .class文件>类对象.硬盘>内村 类加载…

IDEA切换JDK版本超详细步骤

&#x1f600; IDEA切换JDK版本详细教程&#xff0c;全网步骤最详细&#xff0c;实测可用。 文章目录 第一步、选择SDKs切换SDK版本&#xff1a;第二步、选择Modules切换Sources和Dependencies版本&#xff1a;第三步、选择Project切换SDK和Language Level版本&#xff1a;第四…

spellman电源维修高压发生器SL130N300/J1073

高压电源维修故障检修及处理&#xff1a; X射线衍射仪spellman电源维修&#xff0c;正常的开关电源电路&#xff0c;当合上电源开关并按下“通”按钮以后&#xff0c;自耦变压器即通电并发出轻微的嗡嗡声。这时电源指示灯会亮起&#xff0c;电源电源表有指数显示并可进行调试&…

O(N)线性dp,蓝桥2023省赛,有奖问答

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 无 2.2输出 3、原题链接 0有奖问答 - 蓝桥云课 (lanqiao.cn) 二、解题报告 1、思路分析 由于是…

Windows上websocket客户端连接定时存储消息到文件并加载文件定时发送服务端工具实现

场景 在业务开发中&#xff0c;需要对接三方websocket协议数据或者连接并存储线上websocket协议数据&#xff0c;需要使用websocket客户端 连接线上的websocket服务端获取并存储数据&#xff0c;然后将数据存储成文件格式可移植&#xff0c;并将数据复制 到本地&#xff0c;…

three.js如何实现简易3D机房?(一)基础准备-下

接上一篇&#xff1a; three.js如何实现简易3D机房&#xff1f;&#xff08;一&#xff09;基础准备-上&#xff1a;http://t.csdnimg.cn/MCrFZ 目录 四、按需引入 五、导入模型 四、按需引入 index.vue文件中 <template><div class"three-area">&l…

03_控制语句

1 C语言中控制语句概述 在c语言中&#xff0c;控制逻辑主要包含三种&#xff1a; 1.顺序执行&#xff1a; 所谓的顺序执行&#xff0c;指的程序按照特定先后顺序依次执行&#xff1b;也是C语言的特征(面向过程语言)&#xff1b; 2.选择分支&#xff1a; 在执行过程中&#x…

前后端分离项目Docker部署指南(下)

目录 前言&#xff1a; 一.安装nginx 创建目录 上传nginx.conf至/data/nginx/conf文件夹中 运行启动容器 上传静态资源文件 ​编辑 访问结果 前言&#xff1a; 在上一篇博客中&#xff0c;我们深入探讨了如何使用Docker部署一个前后端分离的项目中的后端部分。我们构建…

JavaScript基础知识(三)

JavaScript基础知识&#xff08;三&#xff09; 一、事件1. 事件绑定2.事件流2.1 事件捕获与事件冒泡 3.事件对象扩展3.1 阻止事件冒泡3.2 事件默认行为 4.事件委托5.事件类型5.1 鼠标事件5.2 键盘事件5.3 触屏事件 二、计时器方法1. setInterval 与 clearInterval2. setTimeou…

CMake 围炉札记

文章目录 一、CMake二、CMake 的一些用法1、指定 utf8 编码2、cmake rpath3、cmake 编译Release版本4、cmake重新编译5、cmake 不优化6、cmake 设置定义7、cmake 生成动态库8、cuda 一、CMake CMake 教程 Cmake官方教程解析 跨平台编译 VSCode 和 CLion Android CMake/JNI 二…

mac报错:zsh:command not found: brew

1、基本概述&#xff1f; 在使用brew安装程序的时候MAC提示&#xff1a; zsh:command not found: brew 本质就是brew没有安装&#xff0c;这个命令与linux系统中的yum命令类似。 使用的环境说明&#xff1a; 虚拟机版本&#xff1a;VMware Workstation 17 Pro mac os Ventu…