I have a windows services that bind to some TCP port, this port is use for IPC between my application.
Is there a programming (WinAPI/WinSocket and etc) way to know which application connected to my port?
i.e. in my Windows Services I would like to get a PID of the process that connected to my port.
If you're looking for WinAPI way of doing the same as netstat
. You probably want the following API:
GetExtendedTcpTable
Look for the results with TCP_TABLE_OWNER_PID_ALL
argument.
The resulting MIB_TCPTABLE_OWNER_PID
structure has many MIB_TCPROW_OWNER_PID
structures that has dwOwningPid
which is the process ID you are looking for.
If you mean what process is using (listening on or connected using) your ports, use the following command:
netstat -a -b -o -n
-a
will show you all connection (even if they in LISTENING state)
-b
will show you the application executable that uses that port
-o
will show you the PID of the application
-n
will not do dns translations (you probably don't need these for knowing about the application), not necessary
来源:https://stackoverflow.com/questions/826076/how-to-know-which-local-application-connected-to-my-socket-windows