【发布时间】:2021-03-31 15:54:05
【问题描述】:
这是一个学校项目,所以我需要使用 UDP 广播。
我正在构建一个仅通过 UDP 使用端口 5000 的 P2P 应用程序。我需要向我网络中的所有客户端发送发现广播数据包。
通常该应用程序将在 Hamachi 上使用,但出于开发目的,我想使用最简单最快的网络环境,因此我想在本地测试多个实例。
我发现可以使用 127.0.0.1 127.0.0.2 等作为本地实例的 IP。 (实际测试了ips从1到6,互相随机发消息)
我现在需要使用相同的 5000 端口,但是做一个广播 UDP
当我在环回接口上调用 ifconfig 时,我没有看到 BROADCAST 选项。
由于显然不可能将 BROADCAST 选项添加到环回接口,因此最简单的方法是:
- 每个实例 1 个 IP 地址
- 同一个端口
- 在本地运行
我应该考虑为此使用 Docker 或 VM 或一些网络模拟器吗?
【问题讨论】:
-
您是否尝试发送到环回网络 (
127.0.0.0/8) 的广播地址 (127.255.255.255)? -
广播将仅限于本地广播网络,您可以使用网络广播地址(网络中的最后一个地址)或更常见的方式向本地广播网络上的所有主机广播,
255.255.255.255的有限广播地址将在任何 IPv4 网络上工作(您无需计算网络广播地址)。您可以使用单播测试您的应用程序,但使用有限广播地址进行最终构建。 -
@RonMaupin 我写了一个快速的 Python 脚本,其中每个脚本都监听 127.0.0.{index} 并向 ``、
<broadcast>、127.255.255.255和255.255.255.255发送广播,但没有一个其他脚本得到消息。如果需要,我可以分享代码。 -
并非所有网络类型都有广播。当然,IEEE 协议(以太网、Wi-Fi、令牌环等)可以,但其他协议(帧中继、ATM 等)不可以。您操作系统中的环回网络似乎是后者之一。
标签: sockets networking udp ip broadcast