`netstat` 不显示由 python SimpleHTTPServer 绑定的套接字?

`netstat` doesn't show sockets binded by python SimpleHTTPServer?

本地服务器 运行 使用来自 Python 2.7

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

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

$ netstat | grep 8000
// "return Nothing"

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

请注意 0.0.0.0 意味着您的服务器将在您计算机的所有 IP 地址上列出,因此请将 python 代码中的 IP 地址从 0.0.0.0 更改为 127.0.0.1localhost,如果你想 运行 在本地。

更好 运行 : netstat -an|grep 8000

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

grep 8000 /etc/services

它可能显示为 localhost:irdmi

运行

netstat -na

将解决这个问题并报告更有用的 :8000。 有趣的是,netstat 的默认模式如何比 -n 更多 "friendly" 并且几乎总是不如 -n 有用。

@MK 扩展答案。


默认情况下,netstat 仅显示 连接的端口 ,但 不显示 那些只是闲置的端口。因此,混乱。
netstat 的作者为了简单或美观而做出了这个决定。

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

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

netstat -a | grep 8000