我正在创建一个实用程序,它还包含一些连接到我网络的ip地址列表。
我需要创建一个不断刷新该列表的模块,以便该列表中只存在活动IP。 我想过通过在每个IP上使用PING来实现这一点,并删除非响应的。
问题是,当我的系统本身未连接到网络时,我不想删除IP,因为在这种情况下,所有IP都将被删除,原因很明显。
如何确定我的系统已连接到某个网络? 我正在使用Java。 我试过查看其他问题,但找不到任何相关的内容。
[EDIT1] IP列表是手动添加的,服务器还有几个IP,我不需要关心。所以我不能按照@Hoijf的建议在整个服务器上查找。此外,IP的变化也一致,这就是为什么我需要更新我的列表以便我们可以替换非响应服务器/ IP。
答案 0 :(得分:0)
显示每个IP的状态。
public class temp
{
static ArrayList<InetAddress> history = new ArrayList<InetAddress>();
static Timer timer;
static InetAddress add;
public static void main(String[] args)
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int timeout = 25;
timer = new Timer(1000, new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
for(InetAddress ii : history)
{
try
{
System.out.println(ii+" >> "+ii.isReachable(timeout));
} catch (IOException e1){System.out.println(ii+" >> Failed");}
}
}
});
Thread t = new Thread(new Runnable()
{
@Override
public void run()
{
while(true)
{
try
{
history.add(InetAddress.getByName(br.readLine()));
} catch (UnknownHostException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
t.start();
timer.start();
}
}
答案 1 :(得分:0)
问题是我不希望在我的系统本身时删除IP 没有连接到网络,因为在这种情况下所有的IP都将获得 删除原因很明显。
这是典型的网络隔离问题。您应该考虑局域网仍在运行的情况(ipconfig会将NIC的状态显示为UP),但是,您已经失去了互联网连接(在某些上游路由器上)。作为一种解决方案,您可以考虑ping一直应该启动的引用IP /主机。 因此,您应该在程序中创建一个策略来ping此引用主机,以检查是否应从活动列表中删除主机。