使用Java实现简单的局域网设备扫描

在产品的使用中我们一般都要设置一个配置环节,这个环节可以设定主机的IP地址等信息,但是这样配置的话使得我们的产品用起来效果不是很好,因此我想到了实现局域网IP扫描的功能,IP局域网扫描是指定IP网段获取IP地址信息的方法,在加上PING命令来处理实现,检查该设备是否在线。

代码很简单,主要浏览就是获取主机名,然后检查该设备是否可用,如果可用,那么我们的设备是在线的,如果不可用,那说明以前登陆过,现在无法登陆,然后可以根据主机名来实现自动配置的效果。

具体代码


    public static void main(String[] args) {
        try {
            //设置IP地址网段
            String ips = "192.168.2.";
            String ip;
            InetAddress addip;
            //遍历IP地址
            for (int i = 1; i < 255; i++) {
                ip = ips + i;
                addip = InetAddress.getByName(ip);
                //获取登录过的设备
                if (!ip.equals(addip.getHostName())) {
                    //检查设备是否在线,其中1000ms指定的是超时时间
                    boolean status = InetAddress.getByName(addip.getHostName()).isReachable(1000);     // 当返回值是true时,说明host是可用的,false则不可。
                    System.out.println("IP地址为:" + ip + "\t\t设备名称为: " + addip.getHostName() + "\t\t是否可用: " + (status ? "可用" : "不可用"));
                }
            }
        } catch (java.io.IOException uhe) {
            System.err.println("Unable to find: " + uhe.getLocalizedMessage());
        }
    }

实现效果


IP地址为:192.168.2.1        设备名称为: phicomm.me                              是否可用: 可用
IP地址为:192.168.2.103     设备名称为: yunos-609150f1f6a4a718.lan       是否可用: 不可用
IP地址为:192.168.2.124     设备名称为: tao-mac.lan                                是否可用: 可用
IP地址为:192.168.2.149     设备名称为: android-2bd63cc5913f1868.lan     是否可用: 不可用
IP地址为:192.168.2.183     设备名称为: redminote4x-hongmish.lan         是否可用: 不可用
IP地址为:192.168.2.198     设备名称为: mi6-xiaomishouji.lan                 是否可用: 不可用

进一步

在设置当前网段的时候,可以更具本机的IP地址来自动的设置当前网段,而不是手动的填写。在识别到某个设备可用的时候,通过接口或者主机名称来判断是是服务器,如果是的话,那么就进行连接操作!

猜你喜欢

转载自www.cnblogs.com/zhoutao825638/p/10382052.html