Vibeleaderboard
Index / tool
Visit github.com
Category
Developer Tools
Rank
No. 1374Tools index

Previous survey · No. 1380 ·

Pricing
Open Source
Type
TOOL
Builder
GyulyVGC
GitHub
129 stars
Latest release
v0.6.1
Date

About

Cross-platform Rust library to find out which processes are listening on which network ports.

What it does

Listeners gives Rust programs structured socket ownership data. It can collect every discovered connection or identify a process from a port and protocol. Results include process ID, name, executable path, socket address, transport protocol, and connection state.

Why it's ranked here

This is a focused systems component with unusually broad desktop and BSD coverage. The common data model hides distinct native discovery mechanisms, while caching reduces repeated process metadata work. Documented benchmarks cover full scans and targeted lookups under varied system loads.

What's good

The public types expose useful operational detail, including TCP state, UDP identification, IPv4 and IPv6 addresses, and executable metadata. Callers can request a complete deduplicated set or perform a narrower port lookup. Platform-specific dependencies remain conditionally scoped.

Tradeoffs

Android and iOS remain roadmap items. This is a Rust library, not a ready-made command-line utility or service. Some platform scans silently skip inaccessible or changing process data. OpenBSD returns empty executable paths, and other BSD path lookups may also fall back to empty strings.

How to use it well

Use it inside Rust diagnostics, developer tools, port-conflict checks, or local monitoring that needs one data model across supported operating systems. Prefer targeted lookup when investigating a known port. Bring your own command interface, persistence, remote collection, policy logic, and mobile support.

Technical notes+

src/lib.rs defines Listener, Process, Protocol, and SocketState, returning boxed dynamic errors and deduplicating full results with HashSet. src/platform/mod.rs selects implementations at compile time. Linux correlates socket inodes with processes by scanning /proc in src/platform/linux/helpers.rs; macOS walks process file descriptors through native interfaces in src/platform/macos/mod.rs; Windows uses protocol tables and a PID metadata cache in src/platform/windows/mod.rs; BSD variants use FFI-backed socket tables or per-process scans under src/platform/bsd/. Cargo.toml applies target-specific dependencies and declares Criterion benchmarks for full discovery plus active and inactive port lookup.

Observed

License
MIT
Primary language
Rust, using the 2024 edition
Packaging
Published as the listeners Cargo crate and added through Cargo dependencies
Interface
Rust library API with structured listener and process types
Platform support
Windows, Linux, macOS, FreeBSD, OpenBSD, and NetBSD
Network coverage
TCP and UDP with IPv4 and IPv6 socket addresses
Benchmark structure
Criterion benchmarks cover full discovery and port lookup for active and inactive ports

Read from README.md, Cargo.toml, src/lib.rs, src/platform/mod.rs, src/platform/bsd/mod.rs, src/platform/linux/mod.rs, src/platform/macos/mod.rs, src/platform/bsd/netbsd.rs, src/platform/windows/mod.rs, src/platform/bsd/freebsd.rs, src/platform/bsd/openbsd.rs, src/platform/linux/helpers.rs, src/platform/linux/proc_fd.rs, src/platform/linux/statics.rs, src/platform/macos/statics.rs.

What it can do

  • Scan for listening processes

    System network stateList of processes currently listening on network ports

  • Identify process-to-port mappings

    Active network connectionsMapping of specific processes to their listening ports

  • Query port usage by process ID

    Process identifierNetwork ports that the specified process is listening on

  • List all occupied network ports

    System network configurationComplete list of network ports currently in use

  • Cross-platform network monitoring

    Operating system network stackUnified network listening data across different platforms

Tags

rustnetworkingportscross-platformlibrary

Tech Stack

Rust

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.