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

7

我希望能够从Flutter应用程序连接到本地网络上的计算机。有没有办法获取所有连接到本地网络的计算机?例如ping广播地址的方法?


如果您连接了WiFi,应该可以通过本地IP访问所需的计算机。 - Rémi Rousselet
2个回答

8

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

2
在我的情况下,它只返回一个IP地址,而现在有9个设备连接着。 - Avnish Nishad
1
@Avnishkumar,这是因为某些设备上可能未打开端口(80)。如果在所有设备上已知并且打开套接字连接,则以上方法才有效。 - Nayan

1

目前这个库只能在安卓系统上运行,但是...

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

  1. Setup mdns for whatever service you're running.

  2. Discover the service as such

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

2020年3月26日更新 - 这个方法已经不能在最新版本的flutter中使用,下面是一个更新后的示例。

更新后的示例:这里

另外,什么是MDNS


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接