我有一个绑定到某个 TCP 端口的 Windows 服务,该端口用于我的应用程序之间的 IPC。
是否有编程(WinAPI/WinSocket 等)方法来知道哪个应用程序连接到我的端口?
即在我的 Windows 服务中,我想获得连接到我的端口的进程的 PID。
我有一个绑定到某个 TCP 端口的 Windows 服务,该端口用于我的应用程序之间的 IPC。
是否有编程(WinAPI/WinSocket 等)方法来知道哪个应用程序连接到我的端口?
即在我的 Windows 服务中,我想获得连接到我的端口的进程的 PID。
如果您正在寻找与netstat
. 您可能需要以下 API:
GetExtendedTcpTable
TCP_TABLE_OWNER_PID_ALL
用参数寻找结果。
生成的MIB_TCPTABLE_OWNER_PID
结构具有许多MIB_TCPROW_OWNER_PID
结构,dwOwningPid
这些结构具有您要查找的进程 ID。
如果您的意思是什么进程正在使用(侦听或连接使用)您的端口,请使用以下命令:
netstat -a -b -o -n
-a
将向您显示所有连接(即使它们处于 LISTENING 状态)
-b
将向您显示使用该端口的应用程序可执行文件
-o
将显示应用程序的 PID
-n
不会做 dns 翻译(你可能不需要这些来了解应用程序),没有必要