java 自动获取广播地址

来源:互联网 发布:独战乾坤进阶数据大全 编辑:程序博客网 时间:2024/05/16 13:54

以下为windows下使用但linux下不能使用:

    NetworkInterface netInterface = NetworkInterface.getByInetAddress(InetAddress.getLocalHost());        String broadCastIp = null;        if (!netInterface.isLoopback()&& netInterface.isUp()) {            List<InterfaceAddress> interfaceAddresses = netInterface.getInterfaceAddresses();            for (InterfaceAddress interfaceAddress : interfaceAddresses) {                //只有 IPv4 网络具有广播地址,因此对于 IPv6 网络将返回 null。                 if(interfaceAddress.getBroadcast()!= null){                    broadCastIp =interfaceAddress.getBroadcast().getHostAddress();                }            }        }

以下实现不管是windows还是linux都可以用:

/**     * 获取本机广播地址,并自动区分Windows还是Linux操作系统     * @return String     */    public static String getLocalBroadCast(){        String broadCastIp = null;        try {            Enumeration<?> netInterfaces = (Enumeration<?>) NetworkInterface.getNetworkInterfaces();            while (netInterfaces.hasMoreElements()) {                NetworkInterface netInterface = (NetworkInterface) netInterfaces.nextElement();                if (!netInterface.isLoopback()&& netInterface.isUp()) {                    List<InterfaceAddress> interfaceAddresses = netInterface.getInterfaceAddresses();                    for (InterfaceAddress interfaceAddress : interfaceAddresses) {                        //只有 IPv4 网络具有广播地址,因此对于 IPv6 网络将返回 null。                         if(interfaceAddress.getBroadcast()!= null){                            broadCastIp =interfaceAddress.getBroadcast().getHostAddress();                        }                    }                }            }        }catch (Exception e) {            e.printStackTrace();        }         return broadCastIp;    }
0 0
原创粉丝点击