package com.hdl.sdk.link.common.utils; import android.content.Context; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import java.net.InetAddress; import java.net.InterfaceAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.Enumeration; /** * Created by Tong on 2021/9/27. */ public class IpUtils { /** * @return 广播地址 */ public static String getBroadcastAddress() { try { for (Enumeration niEnum = NetworkInterface.getNetworkInterfaces(); niEnum.hasMoreElements(); ) { NetworkInterface ni = niEnum.nextElement(); if (!ni.isLoopback()) { for (InterfaceAddress interfaceAddress : ni.getInterfaceAddresses()) { if (interfaceAddress.getBroadcast() != null) { return interfaceAddress.getBroadcast().toString().substring(1); } } } } } catch (SocketException e) { e.printStackTrace(); } return "255.255.255.255"; } public static boolean isLocalIpAddress(String ipAddress) { try { for (Enumeration niEnum = NetworkInterface.getNetworkInterfaces(); niEnum.hasMoreElements(); ) { NetworkInterface ni = niEnum.nextElement(); for (InterfaceAddress interfaceAddress : ni.getInterfaceAddresses()) { if (ipAddress.equals(interfaceAddress.getAddress().getHostAddress())) { return true; } } } } catch (SocketException e) { e.printStackTrace(); } return false; } public static String getIP(Context application) { WifiManager wifiManager = (WifiManager) application.getApplicationContext().getSystemService(Context.WIFI_SERVICE); if (!wifiManager.isWifiEnabled()) { try { for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) { NetworkInterface intf = en.nextElement(); for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { InetAddress inetAddress = enumIpAddr.nextElement(); if (!inetAddress.isLoopbackAddress()) { return inetAddress.getHostAddress(); } } } } catch (SocketException e) { e.printStackTrace(); } } else { WifiInfo wifiInfo = wifiManager.getConnectionInfo(); int ipAddress = wifiInfo.getIpAddress(); return intToIp(ipAddress); } return null; } private static String intToIp(int i) { return (i & 0xFF) + "." + ((i >> 8) & 0xFF) + "." + ((i >> 16) & 0xFF) + "." + (i >> 24 & 0xFF); } }