我目前正在 Contiki 在 Telos bmote 上实现我的第一个应用程序并遇到了问题。
对于我的应用程序(使用 uIP IPv4 堆栈),我需要能够向所有节点广播消息。
我查看了源代码,发现在 uip_over_mesh.c 中发现数据包是针对外部网络的,然后被发送到网络上的网关节点,而不是分发到所有节点。如果不存在网关节点,它只会丢弃数据包。所以事实上,不是将数据包广播到网络中的所有节点,它要么只是被丢弃,要么只是被发送到网关节点和外部网络。
我的问题是我需要它广播到网络中的其他节点(应该如此),是否有我遗漏的步骤或者我做错了什么?
谢谢 :)
ps 这是获取要发送的消息的粗略代码。
struct uip_udp_conn *udp_conn = udp_broadcast_new(UIP_HTONS(5001), state);
udp_bind(udp_conn,UIP_HTONS(5001));
uip_udp_packet_send(udp_conn, "hello",5);
抱歉,我的问题似乎不清楚。为了澄清我想要做的是将 IPv4 UDP 数据包发送到广播地址,即使用 allones addr 发送到网络上的所有设备。但是我发现发送设备只会将消息转发到网络上存在的网关节点。