![JAR search and dependency download from the Maven repository](/logo.png)
com.star.net.NetUtil Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of common Show documentation
Show all versions of common Show documentation
some utility class for java develop
The newest version!
package com.star.net;
import java.io.IOException;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.Socket;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Set;
import com.star.exception.pojo.ToolException;
import com.star.lang.Assert;
import com.star.regex.Validator;
import com.star.string.HexUtil;
import com.star.string.StringUtil;
/**
* 网络辅助工具类
*
* @author http://git.oschina.net/loolly/hutool
*
*/
public final class NetUtil {
private NetUtil() {
}
/**
* long转ipv4
*/
public static String longToIpv4(final long longIP) {
final StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(String.valueOf(longIP >>> 24)).append('.')
.append(String.valueOf((longIP & 0x00FFFFFF) >>> 16)).append('.')
.append(String.valueOf((longIP & 0x0000FFFF) >>> 8)).append('.')
.append(String.valueOf(longIP & 0x000000FF));
return stringBuilder.toString();
}
/**
* ipv4转long
*/
public static long ipv4ToLong(final String strIP) {
Assert.notBlank(strIP, "convert ip string to long failure,the input string is null");
long result;
if (strIP.matches(Validator.IPV4)) {
long[] ipArray = new long[4];
// 先找到IP地址字符串中.的位置
final int position1 = strIP.indexOf('.');
final int position2 = strIP.indexOf('.', position1 + 1);
final int position3 = strIP.indexOf('.', position2 + 1);
// 将每个.之间的字符串转换成整型
ipArray[0] = Long.parseLong(strIP.substring(0, position1));
ipArray[1] = Long.parseLong(strIP.substring(position1 + 1, position2));
ipArray[2] = Long.parseLong(strIP.substring(position2 + 1, position3));
ipArray[3] = Long.parseLong(strIP.substring(position3 + 1));
result = (ipArray[0] << 24) + (ipArray[1] << 16) + (ipArray[2] << 8) + ipArray[3];
} else {
result = 0;
}
return result;
}
/**
* 验证端口是否有效
*/
public static boolean isValidPort(final int port) {
return port >= 0 && port <= 0xFFFF;
}
/**
* 验证端口是否可用
*/
public static boolean isUsableLocalPort(final int port) {
Assert.isTrue(isValidPort(port), "verify the port is usable failure,the port is invalid");
boolean result;
try {
new Socket(longToIpv4(2130706433), port).close();
result = false;
} catch (IOException e) {
result = true;
}
return result;
}
/**
* 是否内网地址
*/
public static boolean isInnerIP(final String ipAddress) {
final long ipNum = NetUtil.ipv4ToLong(ipAddress);
return isInner(ipNum, 167772160, 184549375) || isInner(ipNum, 2886729728L, 2887778303L)
|| isInner(ipNum, 3232235520L, 3232301055L) || 2130706433 == ipNum;
}
/**
* 查询本机ipv4
*/
public static Set localIpv4s() {
Enumeration networkInterfaces = null;
try {
networkInterfaces = NetworkInterface.getNetworkInterfaces();
} catch (SocketException e) {
throw new ToolException(
StringUtil.format("Get network interface failure ,the reason is: {}", e.getMessage()), e);
}
Assert.notNull(networkInterfaces, "Get network interface error,the net work interfaces is null");
final HashSet ipSet = new HashSet();
while (networkInterfaces.hasMoreElements()) {
final NetworkInterface networkInterface = networkInterfaces.nextElement();
final Enumeration inetAddresses = networkInterface.getInetAddresses();
while (inetAddresses.hasMoreElements()) {
final InetAddress inetAddress = inetAddresses.nextElement();
if (inetAddress instanceof Inet4Address) {
ipSet.add(inetAddress.getHostAddress());
}
}
}
return ipSet;
}
/**
* ip的最后一部分用*来替代
*/
public static String hideIpPart(final String ipString) {
Assert.notBlank(ipString, "hide ip's last part is failure,the input ip string is null");
return new StringBuilder(ipString.length()).append(ipString.substring(0, ipString.lastIndexOf('.') + 1))
.append('*').toString();
}
/**
* 查询本机mac地址
*
* @return
*/
public static String getMac() {
NetworkInterface network;
byte[] mac;
try {
network = NetworkInterface.getByInetAddress(InetAddress.getLocalHost());
mac = network.getHardwareAddress();
} catch (SocketException | UnknownHostException e) {
throw new ToolException(StringUtil.format("get local mac address failue,the reason is: {}", e.getMessage()),
e);
}
final StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < mac.length; i++) {
stringBuilder.append(HexUtil.byte2Hex(mac[i]));
if (i < mac.length - 1) {
stringBuilder.append('-');
}
}
return stringBuilder.toString();
}
private static boolean isInner(final long userIp, final long begin, final long end) {
return userIp >= begin && userIp <= end;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy