Как узнать, какое локальное приложение подключено к моему сокету (Windows) - PullRequest
2 голосов
/ 05 мая 2009

У меня есть службы Windows, которые связываются с некоторым портом TCP, этот порт используется для IPC между моим приложением.

Существует ли способ программирования (WinAPI / WinSocket и т. Д.), Позволяющий узнать, какое приложение подключено к моему порту?

т.е. в службах Windows я хотел бы получить PID процесса, подключенного к моему порту.

Ответы [ 2 ]

3 голосов
/ 05 мая 2009

Если вы ищете способ WinAPI сделать то же самое, что и netstat. Вы, вероятно, хотите следующий API: GetExtendedTcpTable

Ищите результаты с аргументом TCP_TABLE_OWNER_PID_ALL.

Результирующая структура MIB_TCPTABLE_OWNER_PID имеет много структур MIB_TCPROW_OWNER_PID, в которых есть dwOwningPid, то есть ID процесса, который вы ищете.

0 голосов
/ 05 мая 2009

Если вы имеете в виду, какой процесс использует (прослушивает или подключается через) ваши порты, используйте следующую команду:

netstat -a -b -o -n

-a покажет вам все соединения (даже если они находятся в состоянии LISTENING)

-b покажет вам исполняемый файл приложения, который использует этот порт

-o покажет вам PID приложения

-n не будет выполнять переводы dns (вам, вероятно, они не нужны для знания о приложении), необязательно

...