代码之家  ›  专栏  ›  技术社区  ›  Night Walker

如何获取与打开端口的应用程序关联的端口?

  •  5
  • Night Walker  · 技术社区  · 16 年前

    我需要得到我的机器上所有打开的端口和什么应用程序打开它们的列表。 我需要通过编程来获取这些信息。

    谢谢。

    5 回复  |  直到 14 年前
        1
  •  2
  •   Matt Joiner    16 年前

    is here ,特别是 here is the module in Python 用于从 /proc . 如果你不是 Python original NetHogs 它使用C/C++的混合(读起来有点痛苦,因此重写)。

    值得注意的是,大量或快速重复尝试从 /过程 是非常CPU密集型的,因为操作系统必须处理每个系统调用,并动态解析内部结构。因此,您将在我链接到的两个项目的源代码中找到一些缓存和计时假设。

    /proc/<pid>/fd /proc/net/<proto> . 同样,两个项目中都提供了示例解析以及如何定位所有这些内容。

        2
  •  2
  •   Michael Spector    16 年前

    您必须实现以下目标:

    1. 插座= ls -l /proc/<pid>/fd | grep socket | sed 's/.*socket:\[//' | sed 's/\]//'

    2. grep$socket/proc/net/tcp

    3. 分析上一个命令的输出(第二个条目包含端口信息)

        3
  •  0
  •   GoalBased    16 年前
    exec('netstat');
    
        4
  •  0
  •   Carl Smotricz    16 年前

    有关打开的文件(包括套接字)的信息可以从 /proc

    This article 给你很多细节,让你开始。

        5
  •  0
  •   Bash    14 年前
    ss -nltup 
    netstat -ltupn
    lsof  -iTCP -sTCP:LISTEN
    

    没有必要每次都重新发明轮子。