wwandreww/ping_discover_network
该库允许对IP子网中的网络设备进行ping操作,从而发现它们。可用于查找打印机和其他服务。
- Stars
- 52
- Forks
- 51
- 最近推送(UTC)
- 2023年12月12日
- 项目状态
- 未归档
语言DartRubyObjective-CJava
技术话题
使用的依赖
依赖清单 2 项
- flutter
{"sdk":"flutter"} - flutter_test开发依赖
{"sdk":"flutter"}
原始 README
以下为英文项目原文快照,最新内容请访问 GitHub。
展开 / 收起项目 README
ping_discover_network
Pub
Dart/Flutter library that allows to ping IP subnet and discover network devices.
Could be used to find printers (for example, on port 9100) and any other devices and services in local network.
The device should be connected to a Wi-Fi network. wifi package allows to get the local IP address / network subnet.
The library tested on both, Android and iOS platforms.
[pub.dev page] | [Documentation]
Getting Started
Check complete examples in /example folder.
Discover available network devices in a given subnet on a given port:
import 'package:ping_discover_network/ping_discover_network.dart';
// NetworkAnalyzer.discover pings PORT:IP one by one according to timeout.
// NetworkAnalyzer.discover2 pings all PORT:IP addresses at once.
const port = 80;
final stream = NetworkAnalyzer.discover2(
'192.168.0', port,
timeout: Duration(milliseconds: 5000),
);
int found = 0;
stream.listen((NetworkAddress addr) {
if (addr.exists) {
found++;
print('Found device: ${addr.ip}:$port');
}
}).onDone(() => print('Finish. Found $found device(s)'));
Get local ip and discover network devices:
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.discover2(subnet, port);
stream.listen((NetworkAddress addr) {
if (addr.exists) {
print('Found device: ${addr.ip}');
}
});
Discover available network devices in a given subnet on a given port range:
import 'package:ping_discover_network/ping_discover_network.dart';
void checkPortRange(String subnet, int fromPort, int toPort) {
if (fromPort > toPort) {
return;
}
print('port ${fromPort}');
final stream = NetworkAnalyzer.discover2(subnet, fromPort);
stream.listen((NetworkAddress addr) {
if (addr.exists) {
print('Found device: ${addr.ip}:${fromPort}');
}
}).onDone(() {
checkPortRange(subnet, fromPort + 1, toPort);
});
}
checkPortRange('192.168.0', 400, 410);