【QT】UDP通信/广播/多播应用

在这里插入图片描述

server.ui

在这里插入图片描述
client和server.ui完全相同!!!!
在这里插入图片描述

server.h/.cpp

class Server : public QMainWindow
{.....
private:Ui::Server *ui;QUdpSocket *server;
};--------------------#include "server.h"
#include "ui_server.h"
#include <QPushButton>
#include <QImage>
Server::Server(QWidget *parent) :QMainWindow(parent),ui(new Ui::Server)
{ui->setupUi(this);//实例化一个socket套节字server = new QUdpSocket(this);ui->ip1->setText("127.0.0.1");ui->port1->setText("8090");ui->port2->setText("6060");//绑定自己的端口server->bind(ui->port2->text().toInt());//发送数据connect(ui->send,&QPushButton::clicked,this,[=](){server->writeDatagram(ui->input->toPlainText().toUtf8(),QHostAddress(ui->ip1->text()),ui->port1->text().toInt());ui->record->append("来自宗介的:"+ui->input->toPlainText());ui->input->clear();});//接收数据connect(server,&QUdpSocket::readyRead,this,[=](){//返回值qint64    ------  获取即将要接收的数据报文的大小qint64 size = server->pendingDatagramSize();QByteArray array(size,0);server->readDatagram(array.data(),size);ui->record->append("来自波妞的:"+array);});}Server::~Server()
{delete ui;
}

client.h/.cpp

Client::Client(QWidget *parent) :QMainWindow(parent),ui(new Ui::Client)
{ui->setupUi(this);ui->ip1->setText("127.0.0.1");ui->port1->setText("6060");ui->port2->setText("8090");client = new QUdpSocket(this);//绑定自己的端口client->bind(ui->port2->text().toInt());//发送数据connect(ui->send,&QPushButton::clicked,this,[=](){client->writeDatagram(ui->input->toPlainText().toUtf8(),QHostAddress(ui->ip1->text()),ui->port1->text().toInt() );ui->record->append("来自波纽的:"+ui->input->toPlainText());ui->input->clear();});//接收数据connect(client,&QUdpSocket::readyRead,this,[=](){qint64 size = client->pendingDatagramSize();QByteArray array(size,0);client->readDatagram(array.data(),size);ui->record->append("来自宗介的:"+array);});}

端口号一定要尽可能大!!!!!
在这里插入图片描述

广播

例如前面在UDP中, 我们发送信息都是指定发送的内容,对方的IP地址和对方的端口号,相当于给一个人发信息。广播的意义在于给好多人发消息。

于是IP换一下就成为广播了。

        //广播server->writeDatagram(ui->input->toPlainText().toUtf8(),QHostAddress::Broadcast,ui->port1->text().toInt());//255.255.255.255

组播

例如服务器要进行组播,组播的话要进行设置组播段号,同时还需要要自身绑定更改


server->bind(QHostAddress::AnyIPv4);
//加入组播server->joinMulticastGroup(QHostAddress("244.0.0.10"));server->writeDatagram(ui->input->toPlainText().toUtf8(),QHostAddress("224.0.0.10"),ui->port1->text().toInt());

在这里插入图片描述

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

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

相关文章

智能物流新纪元:分布式I/O模块重塑仓储自动化

随着工业4.0概念的深入人心&#xff0c;物流行业正在经历前所未有的变革。在这个过程中&#xff0c;物流企业必须积极走向工业自动化、智能化&#xff0c;进而提高物流效率&#xff0c;降低物流成本&#xff0c;以便更好地满足客户和市场的需求。智能物流、仓库自动化已然是趋势…

mysql 排序底层原理解析

前言 本章详细讲下排序&#xff0c;排序在我们业务开发非常常见&#xff0c;有对时间进行排序&#xff0c;又对城市进行排序的。不合适的排序&#xff0c;将对系统是灾难性的&#xff0c;这个不是危言耸听。可能有些人会想&#xff0c;对于排序mysql 是怎么实现的&#xff0c;…

MATLAB画图:错误使用plot无效的颜色或线型...

指定绘图颜色 - MATLAB & Simulink (mathworks.com) 使用matlab画图&#xff0c;想要使用其他颜色时&#xff0c;如想要从上面的颜色类型修改为下面的颜色类型 只需要在后面修改color属性即可 s1 plot(C3, LineWidth,2); s1.Color [0.8500 0.3250 0.0980]; hold on s2 …

CVPR2024 | 大核卷积新高度101x101,美团提出PeLK

https://arxiv.org/pdf/2403.07589.pdf 本文概述 最近&#xff0c;一些大核卷积网络以吸引人的性能和效率进行了反击。然而&#xff0c;考虑到卷积的平方复杂度&#xff0c;扩大内核会带来大量的参数&#xff0c;而大量的参数会引发严重的优化问题。由于这些问题&#xff0c;当…

某夕夕商品数据抓取逆向之webpack扣取

逆向网址 aHR0cHM6Ly93d3cucGluZHVvZHVvLmNvbQ 逆向链接 aHR0cHM6Ly93d3cucGluZHVvZHVvLmNvbS9ob21lL2JveXNoaXJ0 逆向接口 aHR0cHM6Ly9hcGl2Mi5waW5kdW9kdW8uY29tL2FwaS9naW5kZXgvdGYvcXVlcnlfdGZfZ29vZHNfaW5mbw 逆向过程 请求方式&#xff1a;GET 参数构成 【anti_content】…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:FolderStack)

FolderStack继承于Stack(层叠布局)控件&#xff0c;新增了折叠屏悬停能力&#xff0c;通过识别upperItems自动避让折叠屏折痕区后移到上半屏 说明&#xff1a; 该组件从API Version 11开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件…

【QT】TCP简易聊天框

我们首先复习一下TCP通信的流程 基于linuxTCP客户端和服务器 QT下的TCP处理流程 服务器先启动&#xff08;处于监听状态&#xff09; 各函数的意义和使用 QTcpServer Class *QTcpServer*类提供了一个基于TCP的服务器。这个类可以接受传入的TCP连接。您可以指定端口或让QTcpS…

sqllab第十六关通关笔记

知识点&#xff1a; 布尔盲注时间盲注 布尔盲注 通过admin admin登录发现没有任何回显信息&#xff1b;但是使用的是成功登录的图片 随便输入一个用户和密码发现出现了错误登录的图片信息 构造usernamea# 感觉又是一个布尔注入 构造payload:usernameaor11# 发现登录失败的…

数据仓库为什么要分层建设?每一层的作用是什么?

在数字化时代&#xff0c;数据已成为企业最宝贵的资产之一。为了更好地管理和利用这些数据&#xff0c;许多企业都建立了数据仓库。然而&#xff0c;数据仓库并非简单的数据存储工具&#xff0c;而是一个复杂的数据处理和分析系统。其中&#xff0c;分层建设是数据仓库设计的重…

sqllab第二十关通关笔记

知识点&#xff1a; cookie注入 可以进行url解析错误注入传参位置 get请求post请求cookie传参 输入admin admin进行登录&#xff0c;抓取当前数据包 通过放包发现是一个302跳转的响应包&#xff0c;页面只有一个 I Love Cookies&#xff1b;没什么信息 通过点击页面上方的按钮…

SpringBoot异常:类文件具有错误的版本 61.0, 应为 52.0的解决办法

问题&#xff1a; java: 无法访问org.mybatis.spring.annotation.MapperScan 错误的类文件: /D:/Program Files/apache-maven-3.6.0/repository/org/mybatis/mybatis-spring/3.0.3/mybatis-spring-3.0.3.jar!/org/mybatis/spring/annotation/MapperScan.class 类文件具有错误的…

Redis 除了做缓存,还能做什么?

分布式锁&#xff1a;通过 Redis 来做分布式锁是一种比较常见的方式。通常情况下&#xff0c;我们都是基于 Redisson 来实现分布式锁。关于 Redis 实现分布式锁的详细介绍&#xff0c;可以看我写的这篇文章&#xff1a;分布式锁详解open in new window 。限流&#xff1a;一般是…