Clase de herramienta Java para procesar IP, incluida la conversión de IP de tipo largo a un tipo de IP general, la conversión del tipo xx.xx.xx.xx a un tipo largo, la obtención de una máscara basada en bits de máscara y el cálculo de IP basado en bits de ip/máscara. Métodos como el ¡La IP inicial del segmento y la IP final del segmento IP basadas en los bits de IP/máscara se pueden usar directamente!
Copie el código de código de la siguiente manera:
paquete com.hh.test;
importar java.util.HashMap;
importar java.util.Map;
importar org.apache.commons.lang3.StringUtils;
/**
* herramientas de propiedad intelectual
*
* @autor bl
* @correo electrónico [email protected]
*
*/
IPUtils de clase pública
{
/**
* Convertir IP de tipo largo a tipo de IP general: xx.xx.xx.xx
*
* @param ip
* @devolver
*/
Cadena estática pública getIpFromLong (IP larga)
{
Cadena s1 = String.valueOf((ip & 4278190080L) / 16777216L);
Cadena s2 = String.valueOf((ip & 16711680L) / 65536L);
Cadena s3 = String.valueOf((ip & 65280L) / 256L);
Cadena s4 = Cadena.valueOf(ip & 255L);
devolver s1 + "." + s2 + "." + s3 + "."
}
/**
* Convertir tipo xx.xx.xx.xx a tipo largo
*
* @param ip
* @devolver
*/
getIpFromString largo estático público (IP de cadena)
{
Largo ipLargo = 0L;
Cadena ipTemp = ip;
ipLargo = ipLargo * 256
+ Long.parseLong(ipTemp.substring(0, ipTemp.indexOf(".")));
ipTemp = ipTemp.substring(ipTemp.indexOf(".") + 1, ipTemp.length());
ipLargo = ipLargo * 256
+ Long.parseLong(ipTemp.substring(0, ipTemp.indexOf(".")));
ipTemp = ipTemp.substring(ipTemp.indexOf(".") + 1, ipTemp.length());
ipLargo = ipLargo * 256
+ Long.parseLong(ipTemp.substring(0, ipTemp.indexOf(".")));
ipTemp = ipTemp.substring(ipTemp.indexOf(".") + 1, ipTemp.length());
ipLong = ipLong * 256 + Long.parseLong(ipTemp);
devolver ipLong;
}
/**
* Obtén la máscara según los bits de la máscara.
*
* @param máscaraBit
* Número de dígitos de la máscara, como "28", "30"
* @devolver
*/
cadena estática pública getMaskByMaskBit (cadena máscaraBit)
{
return StringUtils.isEmpty(maskBit)? "error, ¡maskBit es nulo!"
: máscaraBitMap().get(máscaraBit);
}
/**
* Calcule la IP inicial del segmento IP en función de los bits de IP/máscara, como la cadena IP 218.240.38.69/30
*
* @param ip
* IP dada, como 218.240.38.69
* @param máscaraBit
* Dados los bits de máscara, como 30
* @return Representación de cadena de la IP inicial
*/
Cadena estática pública getBeginIpStr (IP de cadena, Bit de máscara de cadena)
{
devuelve getIpFromLong(getBeginIpLong(ip, maskBit));
}
/**
* Calcule la IP inicial del segmento IP en función de los bits de IP/máscara, como la cadena IP 218.240.38.69/30
*
* @param ip
* IP dada, como 218.240.38.69
* @param máscaraBit
* Dados los bits de máscara, como 30
* @return Representación entera larga de la IP inicial
*/
público estático largo getBeginIpLong (IP de cadena, bit de máscara de cadena)
{
devolver getIpFromString(ip) & getIpFromString(getMaskByMaskBit(maskBit));
}
/**
* Calcule la IP final del segmento IP en función de los bits de IP/máscara, como la cadena IP 218.240.38.69/30
*
* @param ip
* IP dada, como 218.240.38.69
* @param máscaraBit
* Dados los bits de máscara, como 30
* @return Representación de cadena de la IP de terminación
*/
Cadena estática pública getEndIpStr (IP de cadena, Bit de máscara de cadena)
{
devuelve getIpFromLong(getEndIpLong(ip, maskBit));
}
/**
* Calcule la IP final del segmento IP en función de los bits de IP/máscara, como la cadena IP 218.240.38.69/30
*
* @param ip
* IP dada, como 218.240.38.69
* @param máscaraBit
* Dados los bits de máscara, como 30
* @return Representación entera larga de la IP de terminación
*/
público estático largo getEndIpLong (IP de cadena, Bit de máscara de cadena)
{
devolver getBeginIpLong(ip,máscaraBit)
+ ~getIpFromString(getMaskByMaskBit(maskBit));
}
/**
* Convertir a bits de máscara según la máscara de subred, como 255.255.255.252, que se convierte a bits de máscara 30
*
* @param marcas de red
* @devolver
*/
público estático int getNetMask (marcas de red de cadena)
{
StringBuffer sbf;
cadena cadena;
int inetmask = 0, cuenta = 0;
Cadena[] ipList = netmarks.split("//.");
para (int n = 0; n < ipList.length; n++)
{
sbf = toBin(Integer.parseInt(ipList[n]));
str = sbf.reverse().toString();
contar = 0;
para (int i = 0; i < str.length(); i++)
{
yo = str.indexOf('1', yo);
si (yo == -1)
{
romper;
}
contar++;
}
máscara inet += recuento;
}
devolver máscara de red;
}
/**
* Calcular el tamaño de la subred
*
* @param máscara de red
*Pedazos de máscara
* @devolver
*/
público estático int getPoolMax(int maskBit)
{
si (BitMáscara <= 0 ||BitMáscara>= 32)
{
devolver 0;
}
return (int) Math.pow(2, 32 - máscaraBit) - 2;
}
StringBuffer estático privado toBin (int x)
{
Resultado de StringBuffer = nuevo StringBuffer();
resultado.append(x % 2);
x/= 2;
mientras(x>0)
{
resultado.append(x % 2);
x/= 2;
}
resultado de devolución;
}
/*
* Almacena todos los bits de máscara y la clave de máscara correspondiente: valor del bit de máscara: máscara (xxxx)
*/
Mapa estático privado<Cadena, Cadena> máscaraBitMap()
{
Map<String, String> maskBit = new HashMap<String, String>();
máscaraBit.put("1", "128.0.0.0");
máscaraBit.put("2", "192.0.0.0");
máscaraBit.put("3", "224.0.0.0");
máscaraBit.put("4", "240.0.0.0");
máscaraBit.put("5", "248.0.0.0");
máscaraBit.put("6", "252.0.0.0");
máscaraBit.put("7", "254.0.0.0");
máscaraBit.put("8", "255.0.0.0");
máscaraBit.put("9", "255.128.0.0");
máscaraBit.put("10", "255.192.0.0");
máscaraBit.put("11", "255.224.0.0");
máscaraBit.put("12", "255.240.0.0");
máscaraBit.put("13", "255.248.0.0");
máscaraBit.put("14", "255.252.0.0");
máscaraBit.put("15", "255.254.0.0");
máscaraBit.put("16", "255.255.0.0");
máscaraBit.put("17", "255.255.128.0");
máscaraBit.put("18", "255.255.192.0");
máscaraBit.put("19", "255.255.224.0");
máscaraBit.put("20", "255.255.240.0");
máscaraBit.put("21", "255.255.248.0");
máscaraBit.put("22", "255.255.252.0");
máscaraBit.put("23", "255.255.254.0");
máscaraBit.put("24", "255.255.255.0");
máscaraBit.put("25", "255.255.255.128");
máscaraBit.put("26", "255.255.255.192");
máscaraBit.put("27", "255.255.255.224");
máscaraBit.put("28", "255.255.255.240");
máscaraBit.put("29", "255.255.255.248");
máscaraBit.put("30", "255.255.255.252");
máscaraBit.put("31", "255.255.255.254");
máscaraBit.put("32", "255.255.255.255");
devolver máscaraBit;
}
/**
* Obtén la máscara según los bits de la máscara.
*
* @param máscaras
* @devolver
*/
@Obsoleto
Cadena estática pública getMaskByMaskBit (máscaras int)
{
Cadena ret = "";
si (máscaras == 1)
retiro = "128.0.0.0";
sino si (máscaras == 2)
ret = "192.0.0.0";
sino si (máscaras == 3)
retiro = "224.0.0.0";
sino si (máscaras == 4)
retiro = "240.0.0.0";
sino si (máscaras == 5)
retiro = "248.0.0.0";
sino si (máscaras == 6)
retiro = "252.0.0.0";
sino si (máscaras == 7)
retiro = "254.0.0.0";
sino si (máscaras == 8)
retiro = "255.0.0.0";
sino si (máscaras == 9)
retiro = "255.128.0.0";
sino si (máscaras == 10)
retiro = "255.192.0.0";
sino si (máscaras == 11)
retiro = "255.224.0.0";
sino si (máscaras == 12)
retiro = "255.240.0.0";
sino si (máscaras == 13)
retiro = "255.248.0.0";
sino si (máscaras == 14)
retiro = "255.252.0.0";
sino si (máscaras == 15)
retiro = "255.254.0.0";
sino si (máscaras == 16)
retiro = "255.255.0.0";
sino si (máscaras == 17)
retiro = "255.255.128.0";
sino si (máscaras == 18)
retiro = "255.255.192.0";
sino si (máscaras == 19)
retiro = "255.255.224.0";
sino si (máscaras == 20)
retiro = "255.255.240.0";
sino si (máscaras == 21)
retiro = "255.255.248.0";
sino si (máscaras == 22)
retiro = "255.255.252.0";
sino si (máscaras == 23)
retiro = "255.255.254.0";
sino si (máscaras == 24)
retiro = "255.255.255.0";
sino si (máscaras == 25)
retiro = "255.255.255.128";
sino si (máscaras == 26)
retiro = "255.255.255.192";
sino si (máscaras == 27)
retiro = "255.255.255.224";
sino si (máscaras == 28)
retiro = "255.255.255.240";
sino si (máscaras == 29)
retiro = "255.255.255.248";
sino si (máscaras == 30)
retiro = "255.255.255.252";
sino si (máscaras == 31)
retiro = "255.255.255.254";
sino si (máscaras == 32)
retiro = "255.255.255.255";
volver atrás;
}
}