对于Java项目,我需要通过wlan或eth0或其他任何东西扫描连接到同一本地网络的ip列表。我需要获取本地网络中的IP地址列表。
我试过
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)
我想我需要遵循这些步骤。
你能给我正确的实施方式
答案 0 :(得分:1)
遵循以下指示
- 获得您的系统IP
- 获取子网掩码
- 根据子网掩码,获取子网中可能的IP地址列表。&
- 现在,一个接一个地ping他们。 (你可以用java的系统ping命令)
- 检查ping响应,然后您可以决定主机是否启用。
答案 1 :(得分: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;
public class Subnet
{
public void Subnet() throws UnknownHostException, SocketException
{
Enumeration e = NetworkInterface.getNetworkInterfaces();
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++)
{
String ipToTest = sip+it;
boolean online = InetAddress.getByName(itToTest).isReachable(100);
if (online) {
System.out.println(ipToTest+" is online");
}
}
} catch (IOException e1) {
System.out.println(sip);
}
}
}
}
}