关于QT中UDP套接字和组播简单说明

关于QT中UDP套接字和组播简单说明

关于linux的UDP传输:

在这里插入图片描述

关于QT的UDP传输:

在这里插入图片描述

与TCP不同的是, TCP的服务端套接字需要通信套接字和监听套接字, 客户端需要通信套接字, 而在UDP中, 双方只需要UDP套接字, 也就是一个通信套接字即可.
UDP服务端的QUdpSocket对象只需用**.bind()绑定端口, 然后客户端就可以用writeDatagram(str, ip, port)就可以进行数据传输.
服务端接收数据时会触发
readyRead信号**, 便可以使用**readDatagram(str, strMax, ip, port)**来存放接收的数据.
对于数据传输不太理解的可以参考这个: https://blog.csdn.net/qq_36394394/article/details/105910504

关于组播的简单介绍:

使用组播需要的地址是D类地址.

那么他的作用是什么呢?

一般来说, 我们使用例如255.255.255.255(本地局域网)发送数据包(广播) , 位于这个局域网的的所有用户是都能接收到这个数据, 但是你接收了 数据, 数据包是否能呈现出来取决于你的端口是否接收.
可是广播有个缺点, 就是我们有时总是广播的时候, 这个网络很容易出现阻塞, 这时候我们就需要组播了.

QT中组播怎么实现呢?

前提: 使用组播需要的地址是D类地址.
我们连接某段地址, 在这个地址段中, 数据包广播, 需要数据的就加入, 这样就不容易导致网络阻塞

  1. 绑定端口需要绑到 ipv4
    QUdpSocket对象使用 .bind(QHostAddress::AnyIPv4, port);
  2. 加入某个组播
    QUdpSocket对象使用 .joinMulticastGroup( QHostAddress(“ip”) );
关于组播组的介绍

组播组可以是永久的也可以是临时的。组播组地址中,有一部分由官方分配的,称为永久组播组。永久组播组保持不变的是它的ip地址,组中的成员构成可以发生变化。永久组播组中成员的数量都可以是任意的,甚至可以为零。那些没有保留下来供永久组播组使用的ip组播地址,可以被临时组播组利用。

  1. 224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用;

  2. 224.0.1.0~224.0.1.255是公用组播地址,可以用于Internet;

  3. 224.0.2.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效;

.2.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效;

  1. 239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值