【问题标题】:Change Computer IP address using JAVA使用 JAVA 更改计算机 IP 地址
【发布时间】:2014-10-07 07:58:30
【问题描述】:

我需要使用java更改计算机IP地址...我尝试过这个但是不起作用...

    String str1="192.168.0.201"; 
    String str2="255.255.255.0";
    String[] command1 = { "netsh", "interface", "ip", "set", "address",
    "name=", "Local Area Connection" ,"source=static", "addr=",str1,
    "mask=", str2};
    Process pp = java.lang.Runtime.getRuntime().exec(command1);

【问题讨论】:

  • 有什么错误吗?你有权限吗?它可以从命令行工作吗?
  • 什么不起作用?它会给你任何错误吗?哪一个?
  • 我不知道..那里什么都没有显示...
  • 没有尝试过@ScaryWombat
  • @ZulkernainTasin 你希望这段代码做什么?这将更改您的本地计算机(以太网)地址。如果您认为这会改变您的外部 IP 地址,那您就错了。

标签: java ip lan


【解决方案1】:

您(可能)需要正确连接那些 key=value 参数 - 如所写,它们将被视为单独的参数,即

{..., "addr1=" + str1, "mask=" + str2 };

【讨论】:

  • name=\"Local Area Connection\"做同样的事情
【解决方案2】:

你试过了吗?

String[] command1 = { "netsh", "interface", "ip", "set", "address",
"name=\"Local Area Connection\"" ,"source=static", "addr="+str1,
"mask="+str2};

请注意,现在 = 之后的参数不再用空格分隔。还要注意 Local Area Connection 周围的双引号。

如果这也不起作用,请尝试将本地连接用单引号括起来,如下所示:

"name='Local Area Connection'"

【讨论】:

    【解决方案3】:

    确保您的界面名称

    在 cmd 中使用 netsh interface ipv4 show config 来检查您的连接名称

    【讨论】:

      【解决方案4】:
      public class DaysinaMonth {
          public static void main(String[] args) throws Throwable{
              String str1="192.168.0.201"; 
              String str2="255.255.255.0";
              String[] command1 = { "netsh", "interface", "ip", "set", "address",
              "name=", "Local Area Connection" ,"source=static", "addr=",str1,
              "mask=", str2};
              Process pp = java.lang.Runtime.getRuntime().exec(command1);
              System.out.print( pp);
          }
      }
      

      这似乎可行,但返回很奇怪:java.lang.ProcessImpl@659e0bfd

      没有发现错误,我的 ip 已被更改,但不是以预期的方式。

      【讨论】:

        【解决方案5】:

        我测试了你发布的代码,这是我得到的错误

        线程“main”java.lang.Error 中的异常:未解决的编译问题: 未处理的异常类型 IOException

        at DaysinaMonth.main(DaysinaMonth.java:9)
        

        在这一行发现了错误:

        Process pp = java.lang.Runtime.getRuntime().exec(command1);
        

        我没有解决此问题的建议,但我可以说查看提供的代码,运行时似乎没有用,除非用于形成循环,但由于您没有将 IP 设置为随机生成的数字,那没有理由这样做。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-19
          • 2011-11-04
          • 2012-09-01
          • 2019-04-26
          相关资源
          最近更新 更多