【问题标题】:How to dynamically find the IP address of a specific device in a small network?如何在小型网络中动态查找特定设备的IP地址?
【发布时间】:2018-05-16 10:28:08
【问题描述】:

我正在开发一个涉及 Android 应用程序和 ESP8266 的小型爱好项目。基本思想是,ESP8266 将控制一个 RGB LED,应用程序将让我远程控制。

在我的架构中,ESP8266 将连接到我的家庭网络,当我的智能手机连接到同一网络时,当我打开应用程序时,手机和 ESP8266 将配对,我将通过 wifi 进行控制。但是ESP的IP地址会动态变化。我的问题是,如果 ESP8266 不是静态的,我如何才能找到它的 IP 地址?

【问题讨论】:

  • 请先说明您的 esp 上运行的是哪种服务器。也使用了端口。
  • 这是一个 TCP 套接字服务器,端口是 2806。
  • 这就是多播的设计目的。让您的设备监听特定的多播组,您的手机可以向该多播组发送消息,然后设备将通过单播响应您的手机。然后,您的电话将拥有设备的单播地址。通常,您希望使用239.0.0.0/8 范围内的多播组。
  • @Ron Maupin 实际上这就是我想要的。我会选择多播 dns,因为我还发现 esp8266 的 mongoose-os 本身就支持这一点。感谢所有其他答案,它们都很有价值。也请输入此作为答案,以便我可以将此标记为已接受的答案。

标签: android networking ip esp8266


【解决方案1】:

这就是多播的设计目的。让您的设备监听特定的多播组,您的手机可以向多播组发送消息,然后设备将通过单播响应您的手机。然后,您的电话将拥有设备的单播地址。通常,您希望在组织本地范围 (239.0.0.0/8) 范围内使用多播组。

【讨论】:

    【解决方案2】:

    全部尝试一下。

    在 Android 设备上,您首先确定设备本身的 ip。

    说出它的192.168.1.5

    然后你就会知道esp的ip是这样的。喜欢192.168.1.xx

    因此,只需从 192.168.1.3 开始创建一个循环,然后尝试使用您的端口连接到它。将超时设置为一秒。如果超时,请尝试下一个 ip。跳过你自己的 ip。

    你会惊讶于发现 esp 的速度有多快。

    【讨论】:

    • 感谢您的回答,如果我找不到更好的解决方案,我会使用它。我所说的“更好”是指以编程方式更优雅。
    • 有“更好/或官方的解决方案”,但不如这个“优雅”;-)。
    猜你喜欢
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多