FLUTTER ECOSYSTEM

wwandreww/ping_discover_network

이 라이브러리는 IP 서브넷 내의 네트워크 장치에 핑을 보내서 이를 탐지할 수 있게 해줍니다. 프린터 및 기타 서비스를 찾는 데 사용될 수 있습니다.

ping_discover_network 프로젝트 이미지
Stars
52
Forks
51
최근 푸시(UTC)
2023. 12. 12.
프로젝트 상태
활성
wwandreww GitHub avatar
GITHUB User

wwandreww ↗

언어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);