{"id":26158215,"url":"https://github.com/andrey-ushakov/ping_discover_network","last_synced_at":"2025-04-14T09:51:48.129Z","repository":{"id":53617358,"uuid":"191803505","full_name":"andrey-ushakov/ping_discover_network","owner":"andrey-ushakov","description":"The library allows to ping network devices in an IP subnet and therefore dicover them. Could be used to find printers and other services.","archived":false,"fork":false,"pushed_at":"2023-12-12T05:40:50.000Z","size":83,"stargazers_count":50,"open_issues_count":12,"forks_count":47,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-27T23:11:12.384Z","etag":null,"topics":["dart","discover","flutter","network","ping","printer"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andrey-ushakov.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-13T17:10:53.000Z","updated_at":"2025-02-21T20:27:03.000Z","dependencies_parsed_at":"2024-06-19T09:16:48.025Z","dependency_job_id":null,"html_url":"https://github.com/andrey-ushakov/ping_discover_network","commit_stats":{"total_commits":34,"total_committers":2,"mean_commits":17.0,"dds":0.02941176470588236,"last_synced_commit":"ad0bc614433f80691339b65c12b85e38ad3924ce"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrey-ushakov%2Fping_discover_network","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrey-ushakov%2Fping_discover_network/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrey-ushakov%2Fping_discover_network/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrey-ushakov%2Fping_discover_network/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrey-ushakov","download_url":"https://codeload.github.com/andrey-ushakov/ping_discover_network/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248859673,"owners_count":21173337,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dart","discover","flutter","network","ping","printer"],"created_at":"2025-03-11T10:40:16.334Z","updated_at":"2025-04-14T09:51:47.546Z","avatar_url":"https://github.com/andrey-ushakov.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ping_discover_network\n\n![Pub](https://img.shields.io/pub/v/ping_discover_network.svg)\n\n[Dart](https://dart.dev)/[Flutter](https://flutter.dev) library that allows to ping IP subnet and discover network devices.\n\nCould be used to find printers (for example, on port 9100) and any other devices and services in local network.\n\nThe device should be connected to a Wi-Fi network. [wifi package](https://pub.dev/packages/wifi) allows to get the local IP address / network subnet. \n\nThe library tested on both, Android and iOS platforms.\n\n[[pub.dev page]](https://pub.dev/packages/ping_discover_network) | [[Documentation]](https://pub.dev/documentation/ping_discover_network/latest/)\n\n## Getting Started\n\n*Check complete examples in /example folder.*\n\nDiscover available network devices in a given subnet on a given port:\n\n```dart\nimport 'package:ping_discover_network/ping_discover_network.dart';\n\n// NetworkAnalyzer.discover pings PORT:IP one by one according to timeout.\n// NetworkAnalyzer.discover2 pings all PORT:IP addresses at once.\n\nconst port = 80;\nfinal stream = NetworkAnalyzer.discover2(\n  '192.168.0', port,\n  timeout: Duration(milliseconds: 5000),\n);\n\nint found = 0;\nstream.listen((NetworkAddress addr) {\n  if (addr.exists) {\n    found++;\n    print('Found device: ${addr.ip}:$port');\n  }\n}).onDone(() =\u003e print('Finish. Found $found device(s)'));\n```\n\nGet local ip and discover network devices:\n```dart\nimport 'package:wifi/wifi.dart';\nimport 'package:ping_discover_network/ping_discover_network.dart';\n\nfinal String ip = await Wifi.ip;\nfinal String subnet = ip.substring(0, ip.lastIndexOf('.'));\nfinal int port = 80;\n\nfinal stream = NetworkAnalyzer.discover2(subnet, port);\nstream.listen((NetworkAddress addr) {\n  if (addr.exists) {\n    print('Found device: ${addr.ip}');\n  }\n});\n```\n\nDiscover available network devices in a given subnet on a given port range:\n\n```dart\nimport 'package:ping_discover_network/ping_discover_network.dart';\n\nvoid checkPortRange(String subnet, int fromPort, int toPort) {\n  if (fromPort \u003e toPort) {\n    return;\n  }\n\n  print('port ${fromPort}');\n\n  final stream = NetworkAnalyzer.discover2(subnet, fromPort);\n\n  stream.listen((NetworkAddress addr) {\n    if (addr.exists) {\n      print('Found device: ${addr.ip}:${fromPort}');\n    }\n  }).onDone(() {\n    checkPortRange(subnet, fromPort + 1, toPort);\n  });\n}\n\ncheckPortRange('192.168.0', 400, 410);\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrey-ushakov%2Fping_discover_network","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrey-ushakov%2Fping_discover_network","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrey-ushakov%2Fping_discover_network/lists"}