UDP广播

UDP广播分为有限广播和直接广播;

有线广播:将数据传播到本局域网内所有网段,但不能跨路由器(255.255.255.255)

直接广播:将数据传播到指定网段内的所有主机,能跨过路由器广播(192.168.1.255)

=======================================================================================

专门用于同时向网络中所有工作站进行发送的一个地址叫做广播地址。在使用TCP/IP 协议的网络中,主机标识段host ID 为全的IP 地址为广播地址。如果你的IP为:.168.1.39,子

网掩码为:.255.255.0,则广播地址为:.168.1.255;如果IP为.168.1.39,子网掩码为:.255.255.192,则广播地址为:.168.1.63【这里你会发现192+63=255,哈哈】。

如果只想在本网络内广播数据,只要向广播地址发送数据包即可,这种数据包可以被路由,它会经由路由器到达本网段内的所有主机,此种广播也叫直接广播;如果想在整个网络

中广播数据,要向.255.255.255发送数据包,这种数据包不会被路由,它只能到达本物理网络中的所有主机,此种广播叫有限广播。

广播的规则:

1. 接收方一定要知道广播方的口号,然后绑定此端口号才能正确接收。(相当于服务器里的操作==本博客中:http://blog.youkuaiyun.com/baidu_32134295/article/details/70786750     ==)

2. 接收方的Socket不需要设置成广播属性。【接收方相当于服务器】

3. 绑定的IP不可以使用“.0.0.1”,可以使用真实IP地址或者INADDR_ANY。否则接收失败。【规则1链接博客中     bind()绑定IP时输入ip不能为127.0.0.1即 本机ip】

4. 发送端如果没有设置BLOADCASE选项的不递送。【相当于客户端Client  一定要设置广播属性,通过函数setSocketopt()来进行设置】

=======================================================================================

创建套接字(socket)【套接字其实就是进程间进行通信的接口】时,可以通过setSocketopt()函数来设置广播类型。

而创建socket 时,它有两种属性:阻塞(默认状态)和非阻塞。可以通过函数ioctlsocket()函数改变阻塞状态

### 使用UDP进行网络广播 在网络编程中,UDP广播通信是一种有效的数据传输方式。由于广播是基于UDP实现的,因此广播的发送端和接收端的实现流程与常见的UDP客户端与服务器的流程大致相同[^1]。 #### UDP广播特点 UDP协议具有无连接、不可靠等特点,在广播场景下非常适合用于局域网内的快速消息传递。其主要特点是不需要建立连接即可直接发送数据包给多个目标主机,这使得它成为理想的广播工具[^2]。 #### Qt中的UDP广播实现 在Qt框架下开发基于UDP的网络广播应用程序相对简单。通过`QUdpSocket`类可以方便地处理UDP套接字操作。下面是一个简单的例子来展示如何创建一个基本的UDP广播服务端: ```cpp #include <QApplication> #include <QUdpSocket> #include <QWidget> #include <QVBoxLayout> #include <QPushButton> #include <QLabel> class UdpBroadcaster : public QWidget { Q_OBJECT public: explicit UdpBroadcaster(QWidget *parent = nullptr); private slots: void broadcastMessage(); private: QUdpSocket* udpSocket; }; UdpBroadcaster::UdpBroadcaster(QWidget *parent) : QWidget(parent), udpSocket(new QUdpSocket(this)) { QVBoxLayout* layout = new QVBoxLayout(this); QPushButton* startButton = new QPushButton("Start Broadcasting", this); connect(startButton, &QPushButton::clicked, this, &UdpBroadcaster::broadcastMessage); layout->addWidget(startButton); } void UdpBroadcaster::broadcastMessage() { QByteArray message = "Hello from broadcaster!"; udpSocket->writeDatagram(message, QHostAddress::Broadcast, 5555); // 广播至5555端口 } ``` 上述代码展示了怎样利用Qt库构建一个简易的服务端应用,该应用能够周期性地向特定端口(这里是5555)发送广播信息[^3]。 为了完成整个系统的搭建,还需要编写相应的客户端部分以监听这些广播消息,并对其进行适当处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值