#tcp-port #process #tcp #port #tcp-listener #process-id #listen

listeners

以跨平台方式获取监听TCP端口的进程

3个不稳定版本

0.2.1 2024年7月12日
0.2.0 2024年3月27日
0.1.0 2024年3月14日

#443 in 网络编程

Download history 611/week @ 2024-04-30 1382/week @ 2024-05-07 1286/week @ 2024-05-14 1335/week @ 2024-05-21 1571/week @ 2024-05-28 1652/week @ 2024-06-04 2697/week @ 2024-06-11 1561/week @ 2024-06-18 934/week @ 2024-06-25 1806/week @ 2024-07-02 1968/week @ 2024-07-09 2011/week @ 2024-07-16 2512/week @ 2024-07-23 2013/week @ 2024-07-30 1894/week @ 2024-08-06 1599/week @ 2024-08-13

8,396 每月下载量
用于 pik

MIT 许可证

46KB
1K SLoC

Listeners

Crates Downloads Docs CI

一种Rust库,可跨平台方式获取监听TCP端口的进程。

动机

尽管已经存在一些Rust库可以获取进程信息,但它们都没有满足以跨平台方式获取TCP监听器进程ID和名称的需求。

现有库的一些示例

  • netstat2:不提供进程名称(并且未维护)
  • libproc:仅适用于Linux和macOS
  • sysinfo:不公开每个进程使用的套接字

这个库旨在填补这个空白,并旨在成为

  • 跨平台:它目前支持Windows、Linux和macOS
  • 高效:它内部使用低级系统API
  • 简单:它公开直观的API以获取监听进程的详细信息
  • 轻量级:它只有严格必要的依赖项

路线图

  • Windows
  • Linux
  • macOS
  • BSD
  • iOS
  • Android

用法

将此添加到您的 Cargo.toml

[dependencies]

listeners = "0.2"

获取所有监听进程

if let Ok(listeners) = listeners::get_all() {
    for l in listeners {
        println!("{l}");
    }
}

输出

PID: 1088       Process name: rustrover                 Socket: [::7f00:1]:63342
PID: 609        Process name: Microsoft SharePoint      Socket: [::1]:42050
PID: 160        Process name: mysqld                    Socket: [::]:33060
PID: 160        Process name: mysqld                    Socket: [::]:3306
PID: 460        Process name: rapportd                  Socket: 0.0.0.0:50928
PID: 460        Process name: rapportd                  Socket: [::]:50928 

有关用法示例的更多示例,包括如何更细致地获取监听进程,请参阅examples文件夹。

依赖项

~0–39MB
~605K SLoC