2014-12-26 68 views
0

對於Java項目,我需要掃描通過wlan或eth0或任何東西連接到同一本地網絡的ip列表。我需要獲得本地網絡中的IP地址列表獲取本地網絡中的所有Up ip -java

我試圖

InetAddress localHost = Inet4Address.getLocalHost(); 
NetworkInterface networkInterface = NetworkInterface.getByInetAddress(localHost); 

for (InterfaceAddress address : networkInterface.getInterfaceAddresses()) 
{ 
     System.out.println(address.getNetworkPrefixLength()); 
} 

但它給

Exception in thread "main" java.lang.NullPointerException 
at com.Server.Subnet.main(Subnet.java:17) 

我想我需要遵循這些步驟。

  1. 找我連
  2. 掃描所有的IP地址,子網掩碼
  3. 列表中的IP地址均達到網絡的子網地址

你能不能給我的權利實施方式

回答

0

我試過這個程序來查找系統所連接子網中的所有up ip。

package com.Server; 

import java.io.IOException; 
import java.net.Inet4Address; 
import java.net.InetAddress; 
import java.net.InterfaceAddress; 
import java.net.NetworkInterface; 
import java.net.SocketException; 
import java.net.UnknownHostException; 
import java.util.Enumeration; 

import com.Client.Client; 
import com.Main.Data; 

public class Subnet 
{ 
    public void Subnet() throws UnknownHostException, SocketException 
    { 
     Enumeration e = NetworkInterface.getNetworkInterfaces(); 
     Data dt = new Data(); 
     Client cl = new Client(); 
     dt.setClientObject(cl); 
     while(e.hasMoreElements()) 
     { 
      NetworkInterface n = (NetworkInterface) e.nextElement(); 
      Enumeration ee = n.getInetAddresses(); 
      while (ee.hasMoreElements()) 
      { 
       InetAddress i = (InetAddress) ee.nextElement(); 
       String ip = i.getHostAddress(); 

       String sip = ip.substring(0, ip.indexOf('.',ip.indexOf('.',ip.indexOf('.')+1) + 1) + 1); 
       try { 
        for(int it=1;it<=255;it++) 
        { 
         sip = sip+it; 
         InetAddress.getByName(sip).isReachable(100); 
         System.out.println(sip+" is online"); 
         cl.ask(sip); 

        } 
       } catch (IOException e1) { 
        System.out.println(sip); 
       } 
      } 
     } 
    } 
} 
+0

沒有用。 –

+0

確保您的調制解調器不屏蔽其他IP。 –

+0

未找到包'com.Client'! ,你是否發佈了完整的代碼? –

1

按照這些指示
    - 獲取您的系統IP
    - 獲取您的子網掩碼。
    - 根據您的子網掩碼,獲取子網中可能的IP地址列表。 &
    - 現在,一個接一個地ping他們。 (你可以用java的系統ping命令)
    - 檢查ping響應,然後你可以決定主機是否啓動。