npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

react-native-lan-port-scanner

v1.4.3

Published

A simple port scanner for react native.

Readme

logo

react-native-lan-port-scanner

A simple port scanner for react native.

npm version npm MIT Platform - Android Platform - iOS New Architecture

Installation

This package requires react-native-tcp as a peer dependency.

yarn add react-native-lan-port-scanner react-native-tcp

or

npm install react-native-lan-port-scanner react-native-tcp

iOS Setup

After installing the packages, you need to install the pods:

npx pod-install

Make sure you have added NSExceptionAllowsInsecureHTTPLoads to localhost in your info.plist in case of insecure connections:

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>localhost</key>
    <dict>
      <key>NSExceptionAllowsInsecureHTTPLoads</key>
      <true/>
    </dict>
  </dict>
</dict>

Usage

Scan network's hosts with specific ports

import LanPortScanner, { LSScanConfig } from 'react-native-lan-port-scanner';

// Get current network info
const networkInfo = await LanPortScanner.getNetworkInfo();

const config1: LSScanConfig = {
  networkInfo: networkInfo,
  ports: [80, 8085], // Specify ports here
  timeout: 1000,    // Timeout for each thread in ms
  threads: 150,     // Number of threads
};

// OR provide a specific IP range

const ipRange = ['192.168.1.1', '192.168.1.112'];
const config2: LSScanConfig = {
  ipRange: ipRange,  // It will only scan provided ipRange
  ports: [80, 8085],
  timeout: 1000,
  threads: 150,
};

// Start the scan
const cancelScanHandle = LanPortScanner.startScan(
  config1, // or config2
  (totalHosts: number, hostScanned: number) => {
    console.log(`Progress: ${hostScanned / totalHosts}`);
  },
  (result) => {
    // result is LSSingleScanResult or null
    if (result) {
      console.log('Host found:', result);
    }
  },
  (results) => {
    // results is LSSingleScanResult[]
    console.log('Scan finished. All found hosts:', results);
  }
);

// You can cancel scan later
setTimeout(() => {
  cancelScanHandle();
}, 5000);

Scan specific host with port

// Returns `LSSingleScanResult`
const result = await LanPortScanner.scanHost('192.168.1.1', 80, 1000);

Get network info

// Returns `LSNetworkInfo`
const networkInfo = await LanPortScanner.getNetworkInfo();

API

Types

LSScanConfig

Used to configure the network scan.

| Property | Type | Description | | ------------- | ------------------------- | ------------------------------------------------------------ | | networkInfo | LSNetworkInfo | Optional. Contains IP address and subnet mask to scan. | | ipRange | string[] | Optional. Array of IP addresses to scan directly. | | ports | number[] or undefined | Ports to scan, default: [80, 443] | | timeout | number or undefined | Timeout for each connection attempt in ms, default: 1000 ms| | threads | number or undefined | Number of concurrent threads, default: 50 | | logging | boolean | Enable or disable logging, default: false |

LSNetworkInfo

Basic network information.

| Property | Type | Description | | ------------ | -------- | ----------- | | ipAddress | string | IP Address | | subnetMask | string | Subnet mask |

LSNetworkInfoExtra

Detailed network information including generated IP range.

| Property | Type | Description | | -------------- | ---------------- | ---------------------------------------------------------------------------------- | | ipAddress | string | IP Address | | subnetMask | string | Subnet mask | | subnetConv | number or null | A CIDR prefix length for a valid IPv4 netmask or null if the netmask is not valid. | | firstHost | string | The network address for a given IPv4 interface and netmask. | | lastHost | string | The broadcast address for a given IPv4 interface and netmask. | | firstHostHex | string | First host address in hex representation. | | lastHostHex | string | Last host address in hex representation. | | ipRange | string[] | Array of generated IP addresses. |

LSSingleScanResult

Result of a successful port scan on a host.

| Property | Type | Description | | -------- | -------- | ----------- | | ip | string | IP Address | | port | number | Port number |

Methods

getNetworkInfo()

Returns current network information.

const networkInfo = await LanPortScanner.getNetworkInfo();

startScan(config, onProgress, onHostFound, onFinish)

Starts scanning multiple hosts and ports based on the configuration.

generateIPRange(info)

Generates an array of IP addresses based on network info.

const networkInfo = await LanPortScanner.getNetworkInfo();
const ipRangeInfo = LanPortScanner.generateIPRange(networkInfo);

scanHost(ip, port, timeout)

Scans a single host for a specific port.

const result = await LanPortScanner.scanHost('192.168.1.1', 80, 1000);

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT

Credits


Made with create-react-native-library