Question

J'ai un service Windows qui se connecte à un port TCP, ce port est utilisé pour IPC entre mes applications.

Existe-t-il un moyen de programmation (WinAPI / WinSocket, etc.) pour savoir quelle application est connectée à mon port?

i.e. dans mes services Windows, je souhaite obtenir un PID du processus connecté à mon port.

Était-ce utile?

La solution

Si vous recherchez une méthode WinAPI identique à netstat . Vous voulez probablement l'API suivante: GetExtendedTcpTable

Recherchez les résultats avec l'argument TCP_TABLE_OWNER_PID_ALL .

La structure résultante MIB_TCPTABLE_OWNER_PID contient de nombreux MIB_TCPROW_OWNER_PID structures comportant dwOwningPid , qui correspond à l'ID de processus recherché.

Autres conseils

Si vous voulez dire quel processus utilise (écoute ou connexion via) vos ports, utilisez la commande suivante:

netstat -a -b -o -n

-a vous montrera toutes les connexions (même si elles sont à l'état LISTENING)

-b vous montrera le fichier exécutable de l'application utilisant ce port

-o vous montrera le PID de l'application

-n ne fera pas de traduction DNS (vous n'en aurez probablement pas besoin pour connaître l'application), pas nécessaire

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top