【问题标题】:`netstat` doesn't show sockets binded by python SimpleHTTPServer?`netstat` 不显示由 python SimpleHTTPServer 绑定的套接字?
【发布时间】:2016-03-11 15:55:05
【问题描述】:

本地服务器使用 Python 2.7 中的 SimpleHTTPServer 模块运行

$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...

然后我使用 netstat 搜索使用 8000 作为端口号过滤器的套接字,但是,我找不到任何带有过滤器的套接字(即使我打开浏览器窗口并访问 127.0.0.1:8000)。

$ netstat | grep 8000
// "return Nothing"

有没有人知道为什么我在netstat 中看不到 Python SimpleHTTPServer 绑定的套接字?

【问题讨论】:

    标签: python linux sockets tcp netstat


    【解决方案1】:

    请注意,0.0.0.0 表示您的服务器将列出您机器的所有 IP 地址,因此如果您愿意,请将 Python 代码中的 IP 地址从 0.0.0.0 更改为 127.0.0.1localhost在本地运行。

    更好地运行:netstat -an|grep 8000

    【讨论】:

    • 如果我使用127.0.0.1,似乎服务器只能被本地机器访问。我只是想知道为什么使用0.0.0.0:8000 不能被netstat 监控..
    • 尝试运行netstat -an|grep 8000
    • 没有pblm @hanfeisun,如果您满意,请随时接受我的回答
    【解决方案2】:

    当您运行不带 -n 参数的 netstat 时,它会将地址显示为名称,包括协议。因此,如果您正在侦听端口 80,它将显示为 localhost:http,而您的 8000 grep 将找不到它。在您的情况下,它是端口 8000 并根据

    grep 8000 /etc/services
    

    它可能显示为 localhost:irdmi

    跑步

    netstat -na
    

    将解决这个问题并报告更有用的 :8000。 有趣的是,netstat 的默认模式既更“友好”又几乎总是不如 -n 有用。

    【讨论】:

    • imo,这应该是“已接受”的答案。顺便说一句,谁想知道-n 代表--numeric : don't resolve names-a 代表--all: display all sockets (default: connected)
    【解决方案3】:

    通过@MK 扩展答案。


    默认情况下,netstat 只显示连接的端口,但不显示那些只是闲置监听的端口。因此,混乱。
    netstat 的作者提出的呼吁要么是为了简单,要么是为了美观。

    如果您连接到该:8000 端口,它将仅显示在netstat 调用中。

    否则,您必须明确表示您想要它ALL

    netstat -a | grep 8000
    

    【讨论】:

    • 哈哈,好点子。我什至从来不明白那个 -a 的重要性,所以习惯于输入它......
    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 2014-07-21
    • 2015-07-20
    • 2016-06-26
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多