我想将UDP广播数据报发送到网络上的多个设备,包括发送方设备本身。目标是让所有设备在同一时间接收数据(好吧,+ / - 5ms就可以了)。
问题在于发送设备上的网络接口正在循环数据,因此立即接收(与网络延迟发挥作用的其他设备相比 - 例如Wifi相当多)
知道如何禁用我的网络接口直接循环数据吗?
我的另一个想法:是否有可能创建一个虚拟网络接口来发送广播数据包并监听另一个只通过网络接收它的接口?
我正在尝试在Linux机器上的C中执行此操作。任何帮助将不胜感激!
答案 0 :(得分:2)
UDP作为IP有效负载发送。 IP分组的路由是IP栈的域。它决定数据包如何传输到目标。当IP堆栈检测到目标是本地主机时,它会将数据包排入接收队列,并且数据包将立即可用。如果您的适配器'发送队列已填满您将有延迟。因此,您无法与此概念进行同步。
如果您需要硬同步,则应使用NTP或SNTP tro同步时钟并为您所需的常用操作定义注释开始时间。
修改的: (S)NTP协议旨在以毫秒级别进行同步。由于我上面描述的原因,您将获得无法通过任何UDP数据包传输实现的精度。