Android获取本机局域网IP的方法

来源:互联网 发布:淘宝lolcdk是真的吗 编辑:程序博客网 时间:2024/06/02 15:44
直接贴代码,主要利用正则表达式匹配局域网ip
package com.rongyan.clienttest;import java.net.InetAddress;import java.net.NetworkInterface;import java.net.SocketException;import java.util.Enumeration;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * Created by XRY on 2017/7/30. */public class NetWorkUtil {    //匹配C类地址的IP    public static final String regexCIp = "^192\\.168\\.(\\d{1}|[1-9]\\d|1\\d{2}|2[0-4]\\d|25\\d)\\.(\\d{1}|[1-9]\\d|1\\d{2}|2[0-4]\\d|25\\d)$";    //匹配A类地址    public static final String regexAIp = "^10\\.(\\d{1}|[1-9]\\d|1\\d{2}|2[0-4]\\d|25\\d)\\.(\\d{1}|[1-9]\\d|1\\d{2}|2[0-4]\\d|25\\d)\\.(\\d{1}|[1-9]\\d|1\\d{2}|2[0-4]\\d|25\\d)$";    //匹配B类地址    public static final String regexBIp = "^172\\.(1[6-9]|2\\d|3[0-1])\\.(\\d{1}|[1-9]\\d|1\\d{2}|2[0-4]\\d|25\\d)\\.(\\d{1}|[1-9]\\d|1\\d{2}|2[0-4]\\d|25\\d)$";    public static String getHostIp() {        String hostIp;        Pattern ip = Pattern.compile("(" + regexAIp + ")|" + "(" + regexBIp + ")|" + "(" + regexCIp + ")");        Enumeration<NetworkInterface> networkInterfaces = null;        try {            networkInterfaces = NetworkInterface.getNetworkInterfaces();        } catch (SocketException e) {            e.printStackTrace();        }        InetAddress address;        while (networkInterfaces.hasMoreElements()) {            NetworkInterface networkInterface = networkInterfaces.nextElement();            Enumeration<InetAddress> inetAddresses = networkInterface.getInetAddresses();            while (inetAddresses.hasMoreElements()) {                address = inetAddresses.nextElement();                String hostAddress = address.getHostAddress();                Matcher matcher = ip.matcher(hostAddress);                if (matcher.matches()) {                    hostIp = hostAddress;                    return hostIp;                }            }        }        return null;    }}

原创粉丝点击