java 默认网关,java 获得默认网关 和 子网掩码 本机

Java codepublic static void main(String[] args) throws IOException {

String os = System.getProperties().getProperty("os.name"); //得到操作系统 xp 为"Windows XP" 其他的的楼主自己去试试

Process pro = Runtime.getRuntime().exec("ipconfig");

BufferedReader br = new BufferedReader(new InputStreamReader(pro.getInputStream()));

List rowList = new ArrayList();

String temp;

while((temp = br.readLine()) != null){

rowList.add(temp );

}

for (String string : rowList) {

String sm= os.equals("Windows XP") ? "Subnet Mask" : "子网掩码" ; //这里只判断了win7个xp

if(string.indexOf("Subnet Mask") != -1){

Matcher mc = Pattern.compile("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}").matcher(string);

if(mc.find()){

System.out.println("子掩码:" + mc.group());

}else{

System.out.println("子掩码为空");

}

};

String dg = os.equals("Windows XP") ? "Default Gateway" : "默认网关" ; //这里只判断了win7个xp

if(string.indexOf("Default Gateway") != -1){

Matcher mc = Pattern.compile("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}").matcher(string);

if(mc.find()){

System.out.println("默认网关:" + mc.group());

}else{

System.out.println("默认网关为空");

}

return;

};

}

}

------解决方案--------------------探讨

用8楼的结果 我子网掩码是 255.255.255.0 得到的却是255.255.255.255

------解决方案--------------------

使用java.lang.Process类啊

将"ipconfig /all"传进去

Java code/**

* 获取linuxShell命令结果.

* @param cmd 指令

* @return 指令结果

*/

public String getRuntimeExec(final String cmd) {

BufferedReader bufferedReader = null;

Process process = null;

StringBuffer sb = new StringBuffer();

try {

String buffer;

//System.out.println(cmd);

process = Runtime.getRuntime().exec(cmd);

// 得到结果

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

while ((buffer = bufferedReader.readLine()) != null) {

sb.append(buffer + "\n");

}

if (sb.length() > 0) {

sb.deleteCharAt(sb.length() - 1);

}

return sb.toString();

} catch (IOException e) {

// TODO Auto-generated catch block

System.out.println("execute failed.");

return null;

} finally {

// 清理

try {

if (bufferedReader != null) {

bufferedReader.close();

bufferedReader = null;

}

if (process != null) {

process.destroy();

process = null;

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

------解决方案--------------------

也来弄一段:,只能得到掩码Java codepublic static void main(String args[]) {

try {

for (Enumeration nis = NetworkInterface.getNetworkInterfaces();

nis != null && nis.hasMoreElements();) {

NetworkInterface ni = nis.nextElement();

System.out.println("网络适配器:" + ni.getDisplayName());

for (InterfaceAddress ifAddr : ni.getInterfaceAddresses()) {

System.out.println("IP:" + ifAddr.getAddress().getHostAddress());

System.out.println("Mask:" + getMask(ifAddr.getNetworkPrefixLength()) );

//System.out.println("Borad:"+ ifAddr.getBroadcast().getHostAddress());

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 返回指定长度的掩码的字符串,如,长度为8的掩码,返回255.0.0.0;长度为24的掩码,返回255.255.255.0

* 注:只适用于IPV4

* @param maskLength 掩码长度

* @return

*/

private static String getMask(int maskLength){

StringBuffer maskStr = new StringBuffer();

int mask = 0xFFFFFFFF << 32 - maskLength ;

for(int i = 3 ;i >= 0;i--){

maskStr.append( ( mask >> (8*i) ) & 0xFF);

if(i>0){

maskStr.append(".");

}

}

return maskStr.toString();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值