mirror of
https://gitee.com/dromara/hutool.git
synced 2025-04-05 17:37:59 +08:00
fix HostInfo
This commit is contained in:
parent
fb488a0081
commit
8db785ea89
@ -11,6 +11,7 @@
|
||||
|
||||
### Bug修复
|
||||
* 【http】 修复HttpRquest中body方法长度计算问题(issue#I10UPG@Gitee)
|
||||
* 【system】 修复获取本地IP问题(pr#65@Gitee)
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
@ -1,123 +1,64 @@
|
||||
package cn.hutool.system;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.net.Inet4Address;
|
||||
import java.net.InetAddress;
|
||||
import java.net.NetworkInterface;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.Enumeration;
|
||||
|
||||
import cn.hutool.core.net.NetUtil;
|
||||
|
||||
/**
|
||||
* 代表当前主机的信息。
|
||||
*/
|
||||
public class HostInfo implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private final String HOST_NAME;
|
||||
private final String HOST_ADDRESS;
|
||||
private final String HOST_NETWORK_CARD_ADDRESS;
|
||||
private final String HOST_NAME;
|
||||
private final String HOST_ADDRESS;
|
||||
|
||||
public HostInfo() {
|
||||
String hostName;
|
||||
String hostAddress;
|
||||
String hostNetworkCardAddress;
|
||||
public HostInfo() {
|
||||
final InetAddress localhost = NetUtil.getLocalhost();
|
||||
HOST_NAME = localhost.getHostName();
|
||||
HOST_ADDRESS = localhost.getHostAddress();
|
||||
}
|
||||
|
||||
try {
|
||||
InetAddress localhost = InetAddress.getLocalHost();
|
||||
/**
|
||||
* 取得当前主机的名称。
|
||||
*
|
||||
* <p>
|
||||
* 例如:<code>"webserver1"</code>
|
||||
* </p>
|
||||
*
|
||||
* @return 主机名
|
||||
*/
|
||||
public final String getName() {
|
||||
return HOST_NAME;
|
||||
}
|
||||
|
||||
hostName = localhost.getHostName();
|
||||
hostAddress = localhost.getHostAddress();
|
||||
hostNetworkCardAddress = getInternetIp();
|
||||
} catch (UnknownHostException e) {
|
||||
hostName = "localhost";
|
||||
hostAddress = "127.0.0.1";
|
||||
hostNetworkCardAddress = "127.0.0.1";
|
||||
}
|
||||
/**
|
||||
* 取得当前主机的地址。
|
||||
*
|
||||
* <p>
|
||||
* 例如:<code>"192.168.0.1"</code>
|
||||
* </p>
|
||||
*
|
||||
* @return 主机地址
|
||||
*/
|
||||
public final String getAddress() {
|
||||
return HOST_ADDRESS;
|
||||
}
|
||||
|
||||
HOST_NAME = hostName;
|
||||
HOST_ADDRESS = hostAddress;
|
||||
HOST_NETWORK_CARD_ADDRESS = hostNetworkCardAddress;
|
||||
}
|
||||
/**
|
||||
* 将当前主机的信息转换成字符串。
|
||||
*
|
||||
* @return 主机信息的字符串表示
|
||||
*/
|
||||
@Override
|
||||
public final String toString() {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
|
||||
/**
|
||||
* 取得当前主机的名称。
|
||||
*
|
||||
* <p>
|
||||
* 例如:<code>"webserver1"</code>
|
||||
* </p>
|
||||
*
|
||||
* @return 主机名
|
||||
*/
|
||||
public final String getName() {
|
||||
return HOST_NAME;
|
||||
}
|
||||
SystemUtil.append(builder, "Host Name: ", getName());
|
||||
SystemUtil.append(builder, "Host Address: ", getAddress());
|
||||
|
||||
/**
|
||||
* 取得当前主机的地址。
|
||||
*
|
||||
* <p>
|
||||
* 例如:<code>"192.168.0.1"</code>
|
||||
* </p>
|
||||
*
|
||||
* @return 主机地址
|
||||
*/
|
||||
public final String getAddress() {
|
||||
return HOST_ADDRESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* 取得当前主机的网卡IP地址。
|
||||
* <p>
|
||||
* 例如:<code>"192.168.0.1"</code>
|
||||
* </p>
|
||||
*
|
||||
* @return 网卡IP地址
|
||||
*/
|
||||
public final String getNetworkCardAddress() {
|
||||
return HOST_NETWORK_CARD_ADDRESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得网卡IP
|
||||
*
|
||||
* @return 网卡IP
|
||||
*/
|
||||
public static String getInternetIp() {
|
||||
String INTRANET_IP = null;
|
||||
try {
|
||||
Enumeration<NetworkInterface> networks = NetworkInterface.getNetworkInterfaces();
|
||||
InetAddress ip = null;
|
||||
Enumeration<InetAddress> addrs;
|
||||
while (networks.hasMoreElements()) {
|
||||
addrs = networks.nextElement().getInetAddresses();
|
||||
while (addrs.hasMoreElements()) {
|
||||
ip = addrs.nextElement();
|
||||
if (ip != null && ip instanceof Inet4Address && ip.isSiteLocalAddress() && !ip.getHostAddress().equals(INTRANET_IP)) {
|
||||
return ip.getHostAddress();
|
||||
}
|
||||
}
|
||||
}
|
||||
// 如果没有网卡IP,就返回/etc/hosts IP
|
||||
return INTRANET_IP;
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 将当前主机的信息转换成字符串。
|
||||
*
|
||||
* @return 主机信息的字符串表示
|
||||
*/
|
||||
@Override
|
||||
public final String toString() {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
|
||||
SystemUtil.append(builder, "Host Name: ", getName());
|
||||
SystemUtil.append(builder, "Host Address: ", getAddress());
|
||||
SystemUtil.append(builder, "Host NETWORK CARD ADDRESS: ", getNetworkCardAddress());
|
||||
|
||||
return builder.toString();
|
||||
}
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user