リモートマシンでプログラムを実行すると、次のnetstat
ように出力されます。
C:\> netstat -n | find ":80"
TCP 192.168.1.33:1930 209.85.129.190:80 ESTABLISHED
TCP 192.168.1.33:2749 74.125.39.139:80 ESTABLISHED
TCP 192.168.1.33:2861 74.125.171.167:80 TIME_WAIT
この出力から、確立されているすべてのネットワーク接続を確認できます。3番目の列には、他のホストのIPアドレスとポートが表示されます。find
「:80」(私の場合は、接続しているすべてのリモートHTTPホスト)を含む行のみが保持されます。リモートホストが接続するポートがわかっているので、そのポート番号でフィルタリングできます。3番目の列には、このホストに接続されているすべてのコンピューターのIPアドレスとポートが含まれます。
IPアドレスから、それが誰のコンピュータであるかを簡単に見つけることができるはずです。
アップデート:
Javaを使用したいので、何をすべきかは簡単です。
- コマンドを実行します
netstat -n
。
- で出力をキャプチャします
List<String>
。
- 各行を単語に分割します。
- 、で終わり、で
word[0]
ある行のみを保持します。TCP
word[1]
:3389
words[3]
ESTABLISHED
word[2]
これらの行をコロンで分割します。その場合、最初の要素はIPアドレスです。
- これらのIPアドレスのリストを中央サーバーに報告します。
中央サーバーで、Webサーバーを介してアクセスできる小さなプログラムを用意します。
- サーバーはアクティブな接続のリストを保持します。それぞれは、リモートホスト、クライアントホスト、および前回更新されたタイムスタンプで構成されます。
- リモートマシンからの着信接続を受け入れます。
- 1つの接続からクライアントIPアドレスのリストを受信します。
- 「アクティブリスト」から、そのIPから報告されたすべてのクライアントIPアドレスを削除します。
- 結果のリストを表示します。
例えば:
- 最初は、アクティブな接続のリストは空です。
remote0
192.168.0.33,192.168.0.35
アクティブなクライアントとして送信します。
- アクティブな接続のリストに、、が含まれる
remote0:192.168.0.33
ようになりremote0:192.168.0.35
ました。
- しばらく
remote0
して、アクティブなクライアントとして ``(空の応答)を送信します。
- これで、アクティブな接続のリストも空になります。
したがって、Webサーバーは2つのURLを処理する必要があります。
/connections/list
すべてのアクティブな接続を一覧表示します
/connections/update
単一のリモートホストの接続を更新するため
ちょっとした作業のように聞こえますが、これは確かに実行可能です。そして、それが終わったとき、それは私にとって非常に使いやすいと感じます。