速狼加速器 v1.3.05版本的 MD5 值为:16b5e8af5c3774d85c1aa8bd4f624d0b
以下内容为反编译后的 IpUtils.java 源代码,内容仅作参考
package com.lzz.youtu.data;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.Enumeration;
public class IpUtils {
public static void getAllNetInterface() {
ArrayList arrayList = new ArrayList();
try {
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface nextElement = networkInterfaces.nextElement();
Enumeration<InetAddress> inetAddresses = nextElement.getInetAddresses();
while (inetAddresses.hasMoreElements()) {
String hostAddress = inetAddresses.nextElement().getHostAddress();
LogUtils.dLog("IpUtils", "getAllNetInterface,available interface:" + nextElement.getName() + ",address:" + hostAddress);
if (!"127.0.0.1".equals(hostAddress)) {
arrayList.add(nextElement.getName());
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
}
public static boolean isNetworkAvailable(Context context) {
ConnectivityManager connectivityManager;
if (context != null && (connectivityManager = (ConnectivityManager) context.getSystemService("connectivity")) != null) {
if (Build.VERSION.SDK_INT >= 29) {
NetworkCapabilities networkCapabilities = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
if (networkCapabilities != null && (networkCapabilities.hasTransport(0) || networkCapabilities.hasTransport(1) || networkCapabilities.hasTransport(3))) {
return true;
}
} else {
try {
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
if (activeNetworkInfo != null) {
if (activeNetworkInfo.isConnected()) {
return true;
}
}
} catch (Exception unused) {
}
}
}
return false;
}
public static String getIPAddress(Context context) {
if (isNetworkAvailable(context)) {
return getIPAddress1(context);
}
return null;
}
private static String getIPAddress1(Context context) {
NetworkInfo activeNetworkInfo = ((ConnectivityManager) context.getSystemService("connectivity")).getActiveNetworkInfo();
if (activeNetworkInfo == null || !activeNetworkInfo.isConnected()) {
return null;
}
if (activeNetworkInfo.getType() == 0) {
try {
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
Enumeration<InetAddress> inetAddresses = networkInterfaces.nextElement().getInetAddresses();
while (inetAddresses.hasMoreElements()) {
InetAddress nextElement = inetAddresses.nextElement();
if (!nextElement.isLoopbackAddress() && (nextElement instanceof Inet4Address)) {
return nextElement.getHostAddress();
}
}
}
return null;
} catch (SocketException e) {
e.printStackTrace();
return null;
}
}
if (activeNetworkInfo.getType() == 1) {
return intIP2StringIP(((WifiManager) context.getSystemService("wifi")).getConnectionInfo().getIpAddress());
}
return null;
}
public static String getLocalIPAddress() throws SocketException {
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
Enumeration<InetAddress> inetAddresses = networkInterfaces.nextElement().getInetAddresses();
while (inetAddresses.hasMoreElements()) {
InetAddress nextElement = inetAddresses.nextElement();
if (!nextElement.isLoopbackAddress() && (nextElement instanceof Inet4Address)) {
return nextElement.getHostAddress().toString();
}
}
}
return "null";
}
public static String intIP2StringIP(int i) {
return (i & 255) + "." + ((i >> 8) & 255) + "." + ((i >> 16) & 255) + "." + ((i >> 24) & 255);
}
}