java ip地址ipv4,ipv6簡單判斷及ping方式記錄

摘要

近期系統用到判斷ip地址和ping場景,發現兩個比較好用得方法,不依賴第三方包,特此記錄一下

環境

JDK1.8

代碼

@Test
    public void test() throws Exception {
        String address1 = "127.0.0.1";
        String address2 = "127.0.0.256";
        String address3 = "fe80::2ca6:bfce:e67f:c0a6%21";
        String address4 = "10.0.0.1";

        log.info("address {}, result is {}", address1, checkIpAddress(address1));
        log.info("address {}, result is {}", address2, checkIpAddress(address2));
        log.info("address {}, result is {}", address3, checkIpAddress(address3));

        // ping, 3秒超時
        log.info(" address {} reachable: {}", address3, InetAddress.getAllByName(address3)[0].isReachable(3000));
        log.info(" address {} reachable: {}", address4, InetAddress.getAllByName(address4)[0].isReachable(3000));
    }

    private String checkIpAddress(String ipAddress) {
        InetAddress inetAddress;
        try {
            inetAddress = InetAddress.getAllByName(ipAddress)[0];
            if (inetAddress instanceof Inet4Address) {
                return "ipv4";
            } else {
                return "ipv6";
            }
        } catch (UnknownHostException e) {
            return "pattern error!";
        }
    }

運行結果

15:35:41.830 [main] INFO  - address 127.0.0.1, result is ipv4
15:35:41.844 [main] INFO  - address 127.0.0.256, result is pattern error!
15:35:41.845 [main] INFO  - address fe80::2ca6:bfce:e67f:c0a6%21, result is ipv6
15:35:41.847 [main] INFO  -  address fe80::2ca6:bfce:e67f:c0a6%21 reachable: true
15:35:44.499 [main] INFO  -  address 10.0.0.1 reachable: false

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章