いくつかのTCPポートにバインドするWindowsサービスがあります。このポートは、アプリケーション間のIPCに使用されます。
どのアプリケーションが私のポートに接続されているかを知るためのプログラミング(WinAPI / WinSocketなど)の方法はありますか?
つまり、Windowsサービスで、自分のポートに接続されているプロセスのPIDを取得したいと思います。
いくつかのTCPポートにバインドするWindowsサービスがあります。このポートは、アプリケーション間のIPCに使用されます。
どのアプリケーションが私のポートに接続されているかを知るためのプログラミング(WinAPI / WinSocketなど)の方法はありますか?
つまり、Windowsサービスで、自分のポートに接続されているプロセスのPIDを取得したいと思います。
と同じことを行う WinAPI の方法を探している場合netstat
。おそらく次の API が必要です。
GetExtendedTcpTable
引数を使用して結果を探しTCP_TABLE_OWNER_PID_ALL
ます。
結果の構造には、探しているプロセス ID をMIB_TCPTABLE_OWNER_PID
持つ多くのMIB_TCPROW_OWNER_PID
構造があります。dwOwningPid
ポートを使用している (リッスンしている、またはポートを使用して接続している) プロセスを意味する場合は、次のコマンドを使用します。
netstat -a -b -o -n
-a
すべての接続が表示されます (LISTENING 状態であっても)
-b
そのポートを使用するアプリケーションの実行可能ファイルが表示されます
-o
アプリケーションの PID が表示されます
-n
DNS 変換は行いません (アプリケーションについて知るためにこれらはおそらく必要ありません)、必要ありません