网络编程之UDP广播通信

广播通信

像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、付费专栏及课程。

余额充值