You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio(Java) 本地WiFi网络下如何通过主机名获取NodeMCU的IP?

技术解决方案

完全可以通过你设置的NodeMCU主机名获取其局域网IP,常用的落地方案有两种,都不需要终端用户手动输入IP:

方案1:基于mDNS(多播DNS)实现

这是最省事的标准化方案,ESP8266/ESP32系列的NodeMCU都原生支持:

  • NodeMCU端直接调用官方的ESP8266mDNS库(ESP32对应ESPmDNS库),初始化时填入你自定义的主机名即可。比如你设置主机名为home-nodemcu,最终可被解析的mDNS域名为home-nodemcu.local
  • 参考NodeMCU端代码(ESP8266示例):
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>

const char* wifiSsid = "你的WiFi名称";
const char* wifiPwd = "你的WiFi密码";
const char* DEVICE_HOSTNAME = "home-nodemcu"; // 自定义主机名

void setup() {
  WiFi.begin(wifiSsid, wifiPwd);
  while (WiFi.status() != WL_CONNECTED) {
    delay(100);
  }
  // 启动mDNS服务
  if (!MDNS.begin(DEVICE_HOSTNAME)) {
    Serial.println("mDNS服务启动失败");
    while(1) { delay(1000); }
  }
  // 可选:注册你的WebSocket服务端口,方便安卓端直接识别服务
  MDNS.addService("ws", "tcp", 8080);
}

void loop() {
  MDNS.update();
  // 其余业务逻辑
}
  • Android端实现:安卓12及以上系统原生支持mDNS解析,直接调用系统NsdManager类即可扫描到对应设备、解析home-nodemcu.local拿到IP;低版本安卓可以引入第三方mDNS解析库完成解析,全程对用户无感知。

方案2:UDP广播扫描实现

如果你需要兼容所有安卓版本、不想依赖mDNS服务,可以用自定义广播逻辑实现:

  • NodeMCU端监听指定UDP端口,收到安卓端发的广播探测包后,返回自身IP和设备标识
  • 安卓端向局域网广播地址255.255.255.255的指定端口发送探测包,收到NodeMCU的响应包即可提取到IP
  • 优势是兼容性极强、不受系统限制,缺点是需要自己定义简单的通信协议,开发量略高于mDNS方案。

注意事项

  • 两种方案都要求安卓设备和NodeMCU在同一局域网网段,跨VLAN的场景下多播、广播会被路由器拦截,无法正常发现设备
  • 主机名建议只用小写字母、数字和连字符,不要用特殊字符、中文,避免不同系统解析出现兼容问题。

内容的提问来源于stack exchange,提问作者Rupava Baruah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 03:45:09