2016-06-30 4 views
1

私のネットワーク上のすべてのIPアドレスを検索したいと思います。ANDROIDネットワーク上のすべてのIPアドレスを取得

たとえば、私はボタンとリストビューでアクティビティを持っています。

私がボタンをクリックすると、私はnetowrk上のすべてのIPアドレスを取得し、リストビューに入れます。私の英語のため申し訳ありません

=)

+0

あなたのサブネットの無線LANからマスク、およびpingあなたのサブネット上のすべての可能なIPアドレスを取得することができます。 –

+0

あなたは私に例を教えてください? –

+1

いいえ、申し訳ありません、私はあなたの代わりにあなたの仕事をしません。サブネットマスクwfom wifiを取得するような特定の操作を行う方法がわからない場合は、最初にgoogleを実行してから、結果を見つけられない場合は質問してください –

答えて

1

はこれを試してみてください。

private static class NetworkSniffTask extends AsyncTask<Void, Void, Void> { 
    private static final String TAG = "NetworkSniffTask"; 
    private WeakReference<Context> mContextRef; 

    private NetworkSniffTask(Context context) { 
     mContextRef = new WeakReference<>(context); 
    } 

    @Override 
    protected Void doInBackground(Void... voids) { 
     Log.e(TAG, "Let's sniff the network"); 
     try { 
      Context context = mContextRef.get(); 
      if (context != null) { 
       ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
       NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 
       WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
       WifiInfo connectionInfo = wm.getConnectionInfo(); 
       int ipAddress = connectionInfo.getIpAddress(); 
       String ipString = Formatter.formatIpAddress(ipAddress); 
       Log.e(TAG, "activeNetwork: " + String.valueOf(activeNetwork)); 
       Log.e(TAG, "ipString: " + String.valueOf(ipString)); 
       String prefix = ipString.substring(0, ipString.lastIndexOf(".") + 1); 
       Log.e(TAG, "prefix: " + prefix); 
       for (int i = 0; i < 255; i++) { 
        String testIp = prefix + String.valueOf(i); 
        InetAddress name = InetAddress.getByName(testIp); 
        String hostName = name.getCanonicalHostName(); 
        if (name.isReachable(1000)) 
         Log.e(TAG, "Host:" + hostName); 
       } 
      } 
     } catch (Throwable t) { 
      Log.e(TAG, "Well that's not good.", t); 
     } 
     return null; 
    } 
} 
関連する問題