2017-03-18 9 views
0

Javaでネットワークに接続している人を検出する方法はありますか?誰かがあなたのネットワークに接続したときに警告するイベントリスナのようなものですか?ネットワークに接続している人を検出する

たとえば、私は、このコード

String subnet = "192.168.1"; 
    int timeout = 1000; 
    for (int i = 1; i < 255; i++) { 
      String host = subnet + "." + i; 
      if (InetAddress.getByName(host).isReachable(timeout)) { 
       System.out.println(host + " is reachable"); 
      } 
    } 

を使用しています。しかし、それは常にunefficientあるすべての時間を確認する必要があります。他のデバイスがローカルエリアネットワークに接続されているときに、自分のPCが受信するブロードキャストまたは信号はありますか?

ありがとうございます。

+0

必ずしもそうではありません。このようなことを実際に知っている唯一のコンポーネントは、ルータ/スイッチです。 – GhostCat

答えて

0

isReachable()メソッドはICMP ECHOを使用し、すべてのデバイスがデフォルトで有効になっているわけではありません。 Linuxを使用している場合はnetdiscover ARPを使用しています(ARPはTCP/UDPよりも低レベルですが、JavaではTCP/UDP以上のアプリケーションしか作成できません)

+0

残念ながら私はLinuxとWindowsで動作するソリューションが必要です... –

関連する問題