自动设备发现(python或我可以在raspbian上运行的任何工具)

时间:2019-01-27 18:28:33

标签: python-3.x networking raspbian

情况:
我正在从事一个高级设计项目,该项目涉及通过关联都位于同一WIFI网络上的许多设备的音频来计算信号源。这些设备使用REST API交换信息。

该体系结构是主从设备,其中主设备将从所有从设备请求音频。现在,从属单元需要主控单元的IP。然后,他们向将其IP,位置等存储在列表中的主机打个招呼。

我想要的是
我希望从机具有某种自动发现主机IP的方式。我认为我并不真正在乎安全性。做这个的最好方式是什么? 有没有惯用的方式做到这一点?

我想我可能对Google的说法不正确

我考虑过的解决方案:
1.为所有(或仅主设备)分配静态IP。
   -不理想,因为它只能在一台路由器上运行
   -不光滑

  1. 主单元在硬编码端口上侦听,而小兵则发布广播IP。
    • 可能不适用于所有路由器
    • 看起来不太优雅

1 个答案:

答案 0 :(得分:0)

  
      
  1. 主单元在硬编码端口上侦听,小兵在后面广播IP。
  2.   

是的,使用众所周知的端口集合是解决此问题的标准方法。

我会稍微改变一下您的方法。奴隶比主人多,所以主人应该广播。一个小兵可以在上电时发送一个(或几个)广播,以鼓励主人立即回复。但是随着时间和时间的流逝,主人应该是主要负责保持人口同步的人。

一个奴才应该记住最近主机的IP,并在启动时尝试对其进行单播。

请考虑使用以下格式的数据包格式:{magic_number,版本,start_time,num_minions,optional_list_of_minions}

奴才列表将包括{ip_addr,time_of_last_transaction},如果该列表不再适合某些有限大小的UDP数据包,则将为空。奴才可以通过注意到start_time更改来检测主重启,并在重启后立即重新连接。请务必随机抖动您的延迟计时器,这样我们就不会看到一群小兵。