package cn.iocoder.byzs.module.system.util;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class IpUtil {

    /**
     * 判断两个IP地址是否在同一网段（C类网络）
     * @param ip1 第一个IP地址
     * @param ip2 第二个IP地址
     * @return 是否在同一网段
     */
    public static boolean isSameNetworkSegment(String ip1, String ip2) {
        // 如果IP相同，直接返回true
        if (ip1.equals(ip2)) {
            return true;
        }

        try {
            // 将IP地址转换为字节数组
            String[] ip1Parts = ip1.split("\\.");
            String[] ip2Parts = ip2.split("\\.");

            // 检查IP格式是否正确
            if (ip1Parts.length != 4 || ip2Parts.length != 4) {
                return false;
            }

            // 比较前三个部分（C类网络）
            for (int i = 0; i < 3; i++) {
                if (!ip1Parts[i].equals(ip2Parts[i])) {
                    return false;
                }
            }

            return true;
        } catch (Exception e) {
            log.warn("比较IP地址网段时发生异常, ip1={}, ip2={}", ip1, ip2, e);
            return false;
        }
    }
}
