【问题标题】:Flutter/Dart: List devices on local networkFlutter/Dart:列出本地网络上的设备
【发布时间】:2021-03-27 00:05:09
【问题描述】:

我想从 Flutter 应用程序连接到本地网络上的计算机。有没有办法让所有机器都连接到本地网络?喜欢ping广播地址吗?

【问题讨论】:

  • 如果您使用 wifi,您应该能够从其本地 IP 访问所需的机器

标签: networking dart flutter


【解决方案1】:

要发现您的本地网络并列出连接的计算机、打印机和其他网络设备,请使用 ping_discover_network 包。

获取本地ip并发现网络设备:

import 'package:wifi/wifi.dart';
import 'package:ping_discover_network/ping_discover_network.dart';

final String ip = await Wifi.ip;
final String subnet = ip.substring(0, ip.lastIndexOf('.'));
final int port = 80;

final stream = NetworkAnalyzer.discover(subnet, port);
stream.listen((NetworkAddress addr) {
  if (addr.exists) {
    print('Found device: ${addr.ip}');
  }
});

【讨论】:

  • 在我的例子中,它返回一个 ip,而现在有 9 个设备连接。
  • @Avnishkumar 那是因为端口(80)可能没有在设备上打开。上述方法只有在端口已知并且在所有设备中打开套接字连接时才有效。
【解决方案2】:

目前该库仅适用于 Android,但是...

https://pub.dartlang.org/packages/mdns

  1. 为您正在运行的任何服务设置 mdns。

  2. 发现服务本身

    startMdnsDiscovery(String serviceType){
    
        Mdns mdns = new Mdns(discoveryCallbacks: discoveryCallbacks);
    
        mdns.startDiscovery(serviceType);
    
    }
    

2020 年 3 月 26 日更新 - 这不再适用于最新版本的颤振,请参阅下面的更新示例。

更新示例:here

另外,what is MDNS

【讨论】:

    猜你喜欢
    • 2023-02-17
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多