リモートマシンでプログラムを実行すると、次の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]ある行のみを保持します。TCPword[1]:3389words[3]ESTABLISHED
word[2]これらの行をコロンで分割します。その場合、最初の要素はIPアドレスです。
- これらのIPアドレスのリストを中央サーバーに報告します。
中央サーバーで、Webサーバーを介してアクセスできる小さなプログラムを用意します。
- サーバーはアクティブな接続のリストを保持します。それぞれは、リモートホスト、クライアントホスト、および前回更新されたタイムスタンプで構成されます。
- リモートマシンからの着信接続を受け入れます。
- 1つの接続からクライアントIPアドレスのリストを受信します。
- 「アクティブリスト」から、そのIPから報告されたすべてのクライアントIPアドレスを削除します。
- 結果のリストを表示します。
例えば:
- 最初は、アクティブな接続のリストは空です。
remote0192.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単一のリモートホストの接続を更新するため
ちょっとした作業のように聞こえますが、これは確かに実行可能です。そして、それが終わったとき、それは私にとって非常に使いやすいと感じます。