Ho un'applicazione che ho ereditato che ascolta sulla porta 7001 per le trasmissioni UDP dalle nostre apparecchiature di test interne e di recente ho aggiornato un'altra applicazione che deve fare la stessa cosa. Entrambe le applicazioni devono essere in grado di coesistere sullo stesso computer.Come posso rilevare quale programma sta ascoltando una porta tcp/ip in Windows?
Attualmente, quando la mia applicazione aggiornata di recente tenta di collegarsi alla porta per ascoltare le trasmissioni UDP e fallisce, segnala semplicemente che la porta non è disponibile e suggerisce che l'app ereditata è probabilmente in esecuzione. Come posso ottenere che la mia applicazione rilevi l'applicazione effettivamente in ascolto su quella porta? Ho fatto una ricerca su Google e ho anche cercato questo sito, ma finora non sono stato in grado di trovare nulla tranne che per utilizzare Task Manager, TCPView o netstat sulla riga di comando.
Preferirei una tecnica che utilizza l'API di Windows o un componente COM di sistema Windows, poiché entrambe le applicazioni sono scritte in VB6. (Lo so, lo so, ma devo mantenere queste applicazioni poiché sono mission critical.) Tuttavia, una soluzione .NET sarebbe utile anche nel caso in cui ne avessi bisogno nei miei nuovi sforzi di sviluppo.
GetTcpTable2 può ottenere un ID di processo. Domanda simile qui [collegamento] (http://stackoverflow.com/questions/13295277/check-on-avaiable-port-using-wmi-win32-class) – user2773289
Non so se è possibile utilizzare questo o meno, ma l'MSDN la voce sopra per alcuni esempi di codice è disponibile all'indirizzo http://msdn.microsoft.com/en-us/library/windows/desktop/bb408406(v=vs.85).aspx –
È anche possibile ottenere queste informazioni tramite WMI. Cosa molto utile – EJP