package com.dotnar.wheatfield.util;

import com.dotnar.shiro.bean.ServerInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.net.InetAddress;
import java.util.Properties;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * 系统信息
 *
 * @author longshengtang
 * @since 2017-04-23 13:16
 **/
public class SysInfoUtil {
    private static final Logger logger = LoggerFactory.getLogger(SysInfoUtil.class);

    private SysInfoUtil() {
    }


    private static ServerInfo serverInfo;

    public static ServerInfo getSysConfig() {
        if (serverInfo == null) {
            synchronized (SysInfoUtil.class) {
                if (serverInfo == null) {
                    serverInfo = initServerInfo();
                }
            }
        }
        return serverInfo;
    }

    public static String getSysIp() {
        return getSysIp("");
    }

    public static String getSysIp(String defaultIp) {
        ServerInfo sysConfig = getSysConfig();
        if (sysConfig == null) {
            return defaultIp;
        }
        return sysConfig.getServerIp();
    }

    private static AtomicInteger initCount = new AtomicInteger(0);

    //得到计算机的ip,名称,操作系统名称,操作系统版本
    public static ServerInfo initServerInfo() {
        try {
            logger.info("开始获取服务器信息");
            //如果大于5次,证明获取时候出错,最多只能5次
            if (initCount.getAndAdd(1) > 5) {
                return new ServerInfo();
            }
            InetAddress addr = InetAddress.getLocalHost();
            String ip = addr.getHostAddress().toString(); //获取本机ip
            String hostName = addr.getHostName().toString(); //获取本机计算机名称
            System.out.println("本机IP:" + ip + "\n本机名称:" + hostName);
            Properties props = System.getProperties();
            System.out.println("操作系统的名称:" + props.getProperty("os.name"));
            System.out.println("操作系统的版本:" + props.getProperty("os.version"));
            ServerInfo serverInfo = new ServerInfo();
            serverInfo.setServerIp(ip);
            serverInfo.setServerName(hostName);
            serverInfo.setServerSystem(props.getProperty("os.name"));
            logger.info("获取服务服务器信息完成!!! " + serverInfo);
            return serverInfo;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}
最近下载更多
larenmark  LV7 2017年9月9日
最近浏览更多
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友