乐鑫技术交流
直播中

无人岛

10年用户 929经验值
擅长:嵌入式技术 制造/封装 控制/MCU
私信 关注
[问答]

将UDP数据包发送到广播IP地址时遇到的疑问求解

当 wroom 充当主机,我们尝试将 UDP 数据包发送到与 wroom 位于同一网段的广播 IP 地址时,(wroom IP 10.11.12.1,发送到 IP 10.11.12.255),我们经常收到来自 wroom 的“SEND FAIL”响应。  此外,wireshark 还显示了在有和没有校验和错误的情况下接收的交替数据包序列。

当 wroom 充当主机并将 UDP 数据包发送到作为 wroom 客户端的计算机的单个 IP 地址(Wroom IP 10.11.12.1,客户端 IP 10.11.12.2)时,消息会完美地传递到该单台计算机,并且不会创建“SEND FAIL”。 该问题在此配置中不存在,仅在发送到与扫帚位于同一网段的广播IP地址时才存在。

请注意,在对单个 IP 有效的内容和对广播 IP 不起作用的内容之间唯一发生变化的是 UDP 连接的 IP 地址。其他一切都保持不变,包括传输的数据。

此外,当 wroom 充当客户端时,我们可以通过远程主机(WIFI 路由器)广播 UDP 数据包,方法是使用主机 IP 在 wroom 上创建到主机的 UDP 连接,并将最后一个八位字节替换为 255。 (主机 IP 为 192.168.0.1,因此使用 192.168.0.255 创建连接)这将发送所有数据包,而没有“发送失败”,并且连接到远程主机的所有计算机都会接收到该数据包。
wroom固件配置如下:

    AT版本:1.3.0.0(Jul 14, 2016 18:54:01)
    SDK版本:2.0.0(656edbf)
    编译时间:Jul 19, 2016 18:44:44
扫帚使用来自外部处理器的 AT 命令进行控制。
wroom 仅设置为 softAP (CWMODE=2)(除非演示到远程网络的广播 IP 按预期工作)
传输模式(CIPMODE)为0,正常
wroom 配置为允许四个客户端连接,但活动客户端连接的数量不会改变我们遇到的问题的症状;即使没有连接客户端,问题仍然完全相同。

回帖(1)

李梅

2024-7-16 16:56:19
在这种情况下,您遇到的问题可能是由于以下几个原因:

1. **广播限制**:某些网络设备或操作系统可能对广播流量有限制,这可能导致广播数据包被丢弃或无法正确处理。

2. **防火墙设置**:防火墙可能阻止了广播数据包的传输。检查您的防火墙设置,确保允许广播流量。

3. **网络设备配置**:路由器或其他网络设备可能没有正确配置以支持广播。检查网络设备的设置,确保它们允许广播流量。

4. **软件实现问题**:您使用的软件可能在处理广播数据包时存在问题。尝试更新软件或使用其他软件来发送UDP数据包。

5. **校验和错误**:Wireshark显示有和没有校验和错误的情况下接收的交替数据包序列,这可能表明数据包在传输过程中出现了问题。检查您的数据包生成和接收代码,确保正确处理校验和。

为了解决这个问题,您可以尝试以下步骤:

1. **检查网络设备配置**:确保您的路由器和其他网络设备支持广播流量,并正确配置。

2. **检查防火墙设置**:允许广播流量通过防火墙。

3. **更新软件**:确保您使用的软件是最新版本,以修复可能存在的问题。

4. **使用其他软件**:尝试使用其他软件来发送UDP数据包,以排除软件实现问题。

5. **检查代码实现**:仔细检查您的代码,确保正确处理数据包的生成、发送和接收,特别是校验和的处理。

6. **使用单播替代广播**:如果问题仍然存在,您可以考虑使用单播(发送到每个客户端的单独IP地址)替代广播,以确保数据包能够正确传输。

通过以上步骤,您应该能够找到问题的原因并解决它。
举报

更多回帖

×
20
完善资料,
赚取积分