- 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 state → List of processes currently listening on network ports
Identify process-to-port mappings
Active network connections → Mapping of specific processes to their listening ports
Query port usage by process ID
Process identifier → Network ports that the specified process is listening on
List all occupied network ports
System network configuration → Complete list of network ports currently in use
Cross-platform network monitoring
Operating system network stack → Unified network listening data across different platforms
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.
