设置windows系统本地ip地址代码封装

public static void setIpConfig(String adapterName, String ipAddress, String mask, String defaultGateway) throws Exception{
		logger.info("ipconfig to set Ip = " + ipAddress);		
		//netsh interface ip add address "Local Area Connection" gateway=192.168.1.69 gwmetric=0
		
		Process proc = null;	 
		String setIpConfigCmd = "";
		if(defaultGateway.contains(Constants.SPLIT_CHARACTER)){
			String[]gateways = defaultGateway.split(Constants.SPLIT_CHARACTER);			
			setIpConfigCmd = "netsh interface ip set address \"" + Constants.IpConfig_NetworkAdapter_Name + "\" source=static " + ipAddress +	" " + mask + " " + gateways[0];
			for(int i = 1; i < gateways.length; i++){
				setIpConfigCmd += "&netsh interface ip add address \"Local Area Connection\" gateway=" + gateways[i] + " gwmetric=0";
			}
		}else{
			setIpConfigCmd = "netsh interface ip set address \"" + Constants.IpConfig_NetworkAdapter_Name + "\" source=static " + ipAddress +	" " + mask + " " + defaultGateway;
		}
		logger.info(setIpConfigCmd);		
		String endFlag = "set IpAddress command end.";
		String[] cmds = {
				"cmd",
				"/k",
				setIpConfigCmd + "&echo " + endFlag };
		
		proc = Runtime.getRuntime().exec(cmds);
		OutputStream out = proc.getOutputStream();
		InputStream inputStream = proc.getInputStream();
		InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "GBK");
		BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
		
		String endFlag2 = "Ipconfig List End";
		int count = 0;
		String line;
		try {
			//获取commands命令的输出
			while ((line = bufferedReader.readLine()) != null) {				
				logger.info(line);
				if(line.equals(endFlag)){					
					Thread.sleep(2000);
					out.write("ipconfig\r\n".getBytes());
					out.write(("echo " + endFlag2 + "\r\n").getBytes());
					out.flush();
					break;
				}
								
			}
			while((line = bufferedReader.readLine()) != null) {
				logger.info(line);
				if(line.contains(ipAddress)){
					out.write("exit\r\n".getBytes());
					out.flush();
					break;
				}
				
				if(line.equals(endFlag2)){
					if(++count > 10){
						throw new Exception("Failed to set IpAddress as " + ipAddress + ", Can't get newIpAddress after ipconfig called times more than " + count);
					}
					Thread.sleep(1000);
					out.write("ipconfig\r\n".getBytes());
					out.write(("echo " + endFlag2 + "\r\n").getBytes());
					out.flush();					
				}					
			}
			logger.info("Success to set IpAddress.");
		}finally{
			bufferedReader.close();
			inputStreamReader.close();
			if(proc != null)
				proc.destroy();
		}
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值