当我使用 netstat 时,我会收到这样的信息 - PID 4 表示 HTTP.SYS
Active Connections
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4
TCP 10.140.126.48:80 10.140.126.139:57030 ESTABLISHED 4
TCP 10.140.126.48:80 10.140.126.181:57918 ESTABLISHED 4
TCP [::]:80 [::]:0 LISTENING 4
所以使用netsh
我可以接收有关 HTTP 层上特定侦听器的信息
netsh http show servicestate view=requestq verbose=no
:
Snapshot of HTTP service state (Request Queue View):
-----------------------------------------------------
Request queue name: Other Application Pool
Version: 2.0
State: Active
Request queue 503 verbosity level: Limited
Max requests: 1000
Number of active processes attached: 1
Controller process ID: 1216
Process IDs:
3684
URL groups:
URL group ID: FD00000140000003
State: Active
Request queue name: Other Application Pool
Number of registered URLs: 1
Registered URLs:
HTTP://*:80/
Server session ID: FF00000020000004
Version: 2.0
State: Active
URL group ID: FD00000040000001
State: Active
Request queue name: Other Application Pool
Number of registered URLs: 1
Registered URLs:
HTTP://*:80/UI/
Server session ID: FF00000020000004
Version: 2.0
State: Active
URL group ID: FC00000140000002
State: Active
Request queue name: Other Application Pool
Number of registered URLs: 1
Registered URLs:
HTTP://*:80/API2/
Server session ID: FF00000020000004
Version: 2.0
State: Active
Request queue name: Request queue is unnamed.
Version: 2.0
State: Active
Request queue 503 verbosity level: Basic
Max requests: 1000
Number of active processes attached: 1
Process IDs:
7948
URL groups:
URL group ID: F600000040000002
State: Active
Request queue name: Request queue is unnamed.
Number of registered URLs: 1
Registered URLs:
HTTP://*:80/ADMINISTRATION/
Server session ID: F700000020000004
Version: 2.0
State: Active
可以有多个进程在同一个端口上侦听,例如本例中的 PID 7948 和 3684。
有没有可能区分每个连接属于哪个进程到同一个端口,哪个在netstat
输出中列出?
在 IIS 服务器的情况下,可以通过 列出活动请求
appcmd.exe list requests
,但是其他进程呢?
是否有任何 API 调用来获取信息?