课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > 达内新闻 > java程序员:Java获取本机的IP与MAC地址
  • java程序员:Java获取本机的IP与MAC地址

    发布:昆明Java培训      来源:达内新闻      时间:2016-09-23

  • 昆明Java培训机构的老师这一期教大家怎么用Java获取本机的IP与MAC地址。

    有些机器有许多虚拟的网卡,获取IP地址时会出现一些意外,所以需要一些验证:

    1    //获取mac地址

    2    public static String getMacAddress() {

    3        try {

    4            Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface.getNetworkInterfaces();

    5            byte[] mac = null;

    6            while (allNetInterfaces.hasMoreElements()) {

    7                NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement();

    8                if (netInterface.isLoopback() || netInterface.isVirtual() || !netInterface.isUp()) {

    9                    continue;

    10                } else {

    11                    mac = netInterface.getHardwareAddress();

    12                    if (mac != null) {

    13                        StringBuilder sb = new StringBuilder();

    14                        for (int i = 0; i < mac.length; i++) {

    15                            sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));

    16                        }

    17                        if (sb.length() > 0) {

    18                            return sb.toString();

    19                        }

    20                    }

    21                }

    22            }

    23        } catch (Exception e) {

    24            _logger.error("MAC地址获取失败", e);

    25        }

    26        return "";

    27    }

    28

    29    //获取ip地址

    30    public static String getIpAddress() {

    31        try {

    32            Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface.getNetworkInterfaces();

    33            InetAddress ip = null;

    34            while (allNetInterfaces.hasMoreElements()) {

    35                NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement();

    36                if (netInterface.isLoopback() || netInterface.isVirtual() || !netInterface.isUp()) {

    37                    continue;

    38                } else {

    39                    Enumeration<InetAddress> addresses = netInterface.getInetAddresses();

    40                    while (addresses.hasMoreElements()) {

    41                        ip = addresses.nextElement();

    42                        if (ip != null && ip instanceof Inet4Address) {

    43                            return ip.getHostAddress();

    44                        }

    45                    }

    46                }

    47            }

    48        } catch (Exception e) {

    49            _logger.error("IP地址获取失败", e);

    50        }

    51        return "";

    52    }

    以上的代码中

    netInterface.isLoopback() || netInterface.isVirtual() || !netInterface.isUp()

    能很好地把一些非物理网卡或无用网上过滤掉,然后再取网上的IPV4地址即可。

    说到这里,昆明Java培训机构的老师还有一些常用的:

    1、获取当前机器的操作系统

    public final static String WIN_OS = "WINDOWS";

    public final static String MAC_OS = "MAC";

    public final static String LINUX_OS = "LINUX";

    public final static String OTHER_OS = "OTHER";

    public static String getOS() {

    if (SystemUtils.IS_OS_WINDOWS){

    return WIN_OS;

    }

    if (SystemUtils.IS_OS_MAC || SystemUtils.IS_OS_MAC_OSX){

    return MAC_OS;

    }

    if (SystemUtils.IS_OS_UNIX){

    return LINUX_OS;

    }

    return OTHER_OS;

    }

    2、设置HTTP访问代理

    1    /**

    2     *设置http代理

    3     */

    4    public static void setHttpProxy() {

    5        Properties prop = System.getProperties();

    6        //设置http访问要使用的代理服务器的地址

    7        prop.setProperty("http.proxyHost", HTTP_PROXY_HOST);

    8        //设置http访问要使用的代理服务器的端口

    9        prop.setProperty("http.proxyPort", HTTP_PROXY_PORT);

    10        //设置不需要通过代理服务器访问的主机,可以使用*通配符,多个地址用|分隔

    11        prop.setProperty("http.nonProxyHosts", RemoteConfig.PROXT_FILTER_DOMAIN);

    12    }

    13    

    14    /**

    15     *移除http代理

    16     */

    17    public static void removeHttpProxy() {

    18        Properties prop = System.getProperties();

    19        prop.remove("http.proxyHost");

    20        prop.remove("http.proxyPort");

    21        prop.remove("http.nonProxyHosts");

    22    }

    在应用启动时,访问HTTP请求前,设置好就行。当然,http.nonProxyHosts可以不用设置,表示所有的HTTP请求都走代理。

    至于HTTPS代理,类似可以这样设置:

    System.setProperty("https.proxyHost", "HTTP_PROXY_HOST");

    System.setProperty("https.proxyPort", "HTTP_PROXY_PORT");

    学Java开发就到昆明达内Java培训班!了解详情请登陆昆明达内Java培训官网(km.Java.tedu.cn)!

    推荐文章

上一篇:java培训老师聊聊JavaSE --如何理解Java Bean

下一篇:昆明Java培训:JAVA基础,字符串

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:11/30

Java--零基础业余班

Java--零基础业余班

开班日期:11/30

Java--周末提升班

Java--周末提升班

开班日期:11/30

Java--零基础周末班

Java--零基础周末班

开班日期:11/30

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56