Flutter/Dart:列出本地网络上的设备

Mag*_*ang 6 networking dart flutter

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

Jea*_*ont 6

要发现您的本地网络并列出连接的计算机、打印机和其他网络设备,请使用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}');
  }
});
Run Code Online (Sandbox Code Playgroud)

  • 就我而言,它返回一个 ip,而现在有 9 个设备已连接。 (2认同)

njh*_*jha 1

目前这个库只适用于 Android,但是......

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

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

  2. 发现这样的服务

    startMdnsDiscovery(String serviceType){
    
        Mdns mdns = new Mdns(discoveryCallbacks: discoveryCallbacks);
    
        mdns.startDiscovery(serviceType);
    
    }
    
    Run Code Online (Sandbox Code Playgroud)

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

更新的示例:此处

另外,什么是 MDNS