网络编程之UDP广播通信

本文深入讲解了UDP广播通信原理,重点介绍了ARP和DHCP协议如何利用广播通信进行网络设备识别和配置。文中详细阐述了受限广播地址和子网广播地址的概念,并通过DHCP协议流程图辅助理解。此外,还提供了实现广播通信的代码示例,包括设置套接字描述符以支持广播及使用受限广播地址进行通信的过程。
摘要由CSDN通过智能技术生成

广播通信

像ARP地址解析协议和DHCP动态主机设置协议都会使用到UDP中的广播通信方式,这些客户端在启动时,会在第一时间以广播的形式向所在网络子网送报文。

这里给出DHCP协议流程,用于辅助学习,其流程图如下:
在这里插入图片描述

想要进行广播通信,必须知道广播地址才可以。在IP地址中,如果最后一位数组是255,则该地址一定是广播地址,形如192.168.0.255,常见的广播地址有以下两种:

  • 受限广播地址

    255.255.255.255组成的广播地址,我们在代码中可以使用htonl(INADDR_BROADCAST)获取该地址;在当前路由器均不转发此类广播地址。

  • 子网广播地址

    子网广播地址是一种常用的广播方式,它是指在一个具体的子网内进行广播.

    比如192.168是网络ID,则192.168.1.255是其某一个子网的广播地址或192.168.255.255是其全部子网的广播地址。

广播通信实现

广播通信需要采用UDP协议来实现,我们采用受限广播地址进行通信,其客户流程如下:
在这里插入图片描述

核心代码:

//默认的套接字描述符sock是不支持广播,必须设置套接字描述符以支持广播
int so_broadcast = 1;
setsockopt(socketClient, SOL_SOCKET, SO_BROADCAST, (const char*)&so_broadcast,sizeof(so_broadcast));

//填充服务器socket信息
SOCKADDR_IN addrServer;

addrServer.sin_family   = AF_INET;
//服务器的应用程序端口
addrServer.sin_port     = htons(6000);

//服务器的IP地址,INADDR_BROADCAST代表255.255.255.255 是广播
addrServer.sin_addr.S_un.S_addr = htonl(INADDR_BROADCAST);

//以下是数据收发流程实现,查看git源代码

源码路径:
https://github.com/jinxiang1224/cpp/tree/master/project/vs2008/src/UDPClient

参考文章:
https://www.cnblogs.com/coder2012/archive/2013/04/02/2995889.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值