如何用c#查看端口被哪个进程占用

来源:百度知道 编辑:UC知道 时间:2024/05/14 10:33:13
小虾写了个端口扫描软件,可以发现有哪些端口是开放的,请问,如何看看这些端口被哪些程序占用或者打开?谢谢。
可以具体一点吗?这两个文件又保存在哪里呢?

用System.Diagnostic.Process.Start,运行netstat -o > net.txt和tasklist > process.txt,得到关于端口和进程PID对应的列表文本文件net.txt,以及软件名和PID对应的列表文本文件process.txt。
*********
第一个命令得到所有端口被那个PID占用的信息,保存为文件
第二个命令得到所有PID和进程名称的对应信息,保存为文件
你再读取这两个文件,将端口直接对应到进程名称,列出即可
*******
保存到哪里随你啊,难道你说的不是本机?那我回答的就有问题了,要扫描别的机器,要用Socket,变换端口进行数据包发送。
只要你保存的文件能读到,能分析就可以了。
之所以保存到文件,是因为dos命令只能重定向到文件、打印机等,不可能直接到内存

@echo off
set /p inputPID=[请输入端口号:]
netstat -ano | findstr ":%inputPID%">inputPID.忆林子
FOR /F "tokens=1,2,3,4,5" %%i IN ('more inputPID.忆林子') DO (
for /f "delims=: tokens=1,2" %%a in ("%%j") do (
if /i "%%b"=="%inputPID%" (
if /i "%%m" neq "" tasklist /fi "pid eq %%m"
if /i "%%m"=="" tasklist /fi "pid eq %%l"
)
)
)
if exist inputPID.忆林子 del inputPID.忆林子 /q
PAUSE