快速提问
获取广播地址的良好做法是使用类似ioctl()
或的系统调用getifaddrs()
,或者由于以下两个原因它们是否已经过时/无用?
- 我可以在网络掩码和 IP 之间进行二进制或运算
- 广播地址并不总是被设置的
细节
我正在使用一些 UDP 广播代码,既在我的 Arch Linux 机器上,也在一些 Ubuntu Docker 容器上。
我看到一些接口设置了广播地址,例如 Arch Linux 上的我的 wifi 接口(来自$ ip addr
):
inet 192.168.0.11/24 brd 192.168.0.255 范围全局 wlp4s0
有些则没有,例如eth0
Ubuntu Docker 容器上的界面:
inet 172.17.0.5/16 范围全局 eth0
但是,如果我发送数据包172.17.255.255
到它们实际上被广播了到网络上的其他机器。
在这个问题据说不需要手动设置广播地址。并且这里,有人似乎暗示 Docker 故意不设置广播地址,出于某种我不明白的原因。
所以我开始疑惑:检测网络接口的广播地址的正确方法是什么?