栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

所有接口上的UDP广播

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

所有接口上的UDP广播

首先,您应该考虑过时的广播,特别是

INADDR_BROADCAST
(255.255.255.255)。您的问题恰恰突出了广播不适合的原因之一。它应该与IPv4一起消失(希望如此)。请注意,IPv6甚至没有广播的概念(而是使用多播)。

INADDR_BROADCAST
仅限于本地链接。如今,唯一可见的用途是用于DHCP自动配置,因为此时,客户端尚不知道客户端连接到哪个网络。

使用single时

sendto()
,仅生成一个数据包,而传出接口由操作系统的路由表(
iproute
在Linux上)确定。您不能一次
sendto()
生成一个以上的数据包,您必须在所有接口上进行迭代,并使用原始套接字或将套接字绑定到用于
setsockopt(...,SOL_SOCKET, SO_BINDTODEVICE, "ethX")
绕过OS路由表发送每个数据包的设备(这需要root特权) 。不是一个好的解决方案。

相反,由于

INADDR_BROADCAST
无论如何都不路由,因此可以通过遍历每个接口并将数据包发送到其广播地址来实现几乎相同的目的。例如,假设您的网络具有255.255.255.0(/
24)掩码,则广播地址为 192.168.1.255192.168.2.255
。给
sendto()
这些地址中的每一个打电话一次,您就可以实现自己的目标。


编辑: 固定有关的信息

INADDR_BROADCAST
,并以补充信息
SO_BINDTODEVICE



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/408751.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号