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

如何使用Dart从IP地址获取主机名(Flutter应用场景)

通过Dart实现局域网IP到主机名的解析(Flutter应用)

在Dart中可直接借助dart:io库的API实现IP地址的反向解析,从而获取局域网内对应设备的主机名,具体实现方案如下:

核心实现代码

导入dart:io后,使用InternetAddress.reverse()方法发起反向DNS查询,这是异步操作,需用async/await处理:

import 'dart:io';

Future<String?> getHostNameFromIp(String ipAddress) async {
  try {
    final internetAddress = await InternetAddress.reverse(ipAddress);
    return internetAddress.host;
  } on SocketException catch (e) {
    // 解析失败,可能是设备不支持反向解析、网络不通或无权限
    print('解析失败: ${e.message}');
    return null;
  }
}

使用示例

在Flutter的业务逻辑或页面中调用该函数即可:

void main() async {
  String? hostName = await getHostNameFromIp('192.168.1.100');
  if (hostName != null) {
    print('对应主机名: $hostName');
  } else {
    print('无法获取该IP的主机名');
  }
}

注意事项

  • 权限配置:Android平台需要在AndroidManifest.xml中添加<uses-permission android:name="android.permission.INTERNET"/>权限;iOS平台无需额外权限,但要确保设备与目标IP处于同一局域网。
  • 解析限制:并非所有局域网设备都支持反向解析,部分设备可能关闭了NetBIOS或DNS服务,此时会返回null,需做好异常兜底处理。
  • 异步处理:reverse()是异步方法,必须在异步函数中调用,避免阻塞Flutter的UI线程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:02:34