获取eth0的ip: getIpAddrForInterfaces("eth0")java

private String getIpAddrForInterfaces(String interfaceName){

try {

Enumeration enNetworkInterface = NetworkInterface.getNetworkInterfaces(); //获取本机全部的网络接口

while (enNetworkInterface.hasMoreElements()) { //判断 Enumeration 对象中是否还有数据

NetworkInterface networkInterface = enNetworkInterface.nextElement(); //获取 Enumeration 对象中的下一个数据

if (!networkInterface.isUp()) { // 判断网口是否在使用

continue;

}

if (!interfaceName.equals(networkInterface.getDisplayName())) { // 网口名称是否和须要的相同

continue;

}

Enumeration enInetAddress = networkInterface.getInetAddresses(); //getInetAddresses 方法返回绑定到该网卡的全部的 IP 地址。

while (enInetAddress.hasMoreElements()) {

InetAddress inetAddress = enInetAddress.nextElement();

if (inetAddress instanceof Inet4Address) { //判断是否未ipv4

return inetAddress.getHostAddress();

}

// 判断未lo时

// if (inetAddress instanceof Inet4Address && !inetAddress.isLoopbackAddress()) {

// return inetAddress.getHostAddress();

// }

}

}

} catch (Exception e) {

e.printStackTrace();

}

return "error";

}

获取eth0的子网掩码:getIpAddrMaskForInterfaces("eth0")网络

private String getIpAddrMaskForInterfaces(String interfaceName) {

try {

Enumeration networkInterfaceEnumeration = NetworkInterface.getNetworkInterfaces(); //获取本机全部的网络接口

while (networkInterfaceEnumeration.hasMoreElements()) { //判断 Enumeration 对象中是否还有数据

NetworkInterface networkInterface = networkInterfaceEnumeration.nextElement(); //获取 Enumeration 对象中的下一个数据

if (!networkInterface.isUp() && !interfaceName.equals(networkInterface.getDisplayName())) { //判断网口是否在使用,判断是否时咱们获取的网口

continue;

}

for (InterfaceAddress interfaceAddress : networkInterface.getInterfaceAddresses()) { //

if (interfaceAddress.getAddress() instanceof Inet4Address) { //仅仅处理ipv4

return calcMaskByPrefixLength(interfaceAddress.getNetworkPrefixLength()); //获取掩码位数,经过 calcMaskByPrefixLength 转换为字符串

}

}

}

} catch (SocketException e) {

e.printStackTrace();

}

return "error";

}

//经过子网掩码的位数计算子网掩码

public static String calcMaskByPrefixLength(int length) {

int mask = 0xffffffff << (32 - length);

int partsNum = 4;

int bitsOfPart = 8;

int maskParts[] = new int[partsNum];

int selector = 0x000000ff;

for (int i = 0; i < maskParts.length; i++) {

int pos = maskParts.length - 1 - i;

maskParts[pos] = (mask >> (i * bitsOfPart)) & selector;

}

String result = "";

result = result + maskParts[0];

for (int i = 1; i < maskParts.length; i++) {

result = result + "." + maskParts[i];

}

return result;

}

获取默认网关:getGateWay() oop

private String getGateWay() {

String [] arr;

try {

Process process = Runtime.getRuntime().exec("ip route list table 0");

String data = null;

BufferedReader ie = new BufferedReader(new InputStreamReader(process.getErrorStream()));

BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));

String string = in.readLine();

arr = string.split("\\s+");

return arr[2];

} catch (IOException e) {

e.printStackTrace();

}

return "error";

}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐