使用JAVA更改计算机IP地址

4

我需要使用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);

有任何错误吗?你有权限吗?它能从命令行工作吗? - Scary Wombat
什么没起作用?它给你报错了吗?是哪一个错误? - Uwe Plonus
我不知道...那里什么也没有显示... - Zulkernain Tasin
我没有尝试过那个 @ScaryWombat - Zulkernain Tasin
1
@ZulkernainTasin 你希望这段代码做什么?它将更改你本地机器(以太网)的地址。如果你认为这会更改你的外部IP地址,那么你是错误的。 - Alboz
显示剩余2条评论
6个回答

2

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

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

请将 name=\"Local Area Connection\" 更改为相同的内容。 - Alnitak

1

确保你的接口名称正确

在命令提示符中使用netsh interface ipv4 show config检查你的连接名称


1
你尝试过这个吗?
String[] command1 = { "netsh", "interface", "ip", "set", "address",
"name=\"Local Area Connection\"" ,"source=static", "addr="+str1,
"mask="+str2};

请注意,现在等号后的参数不再用空格分隔。还要注意双引号包围“本地连接”。
如果这样仍然不起作用,请尝试像这样用单引号括起来:“Local Area Connection”。
"name='Local Area Connection'"

0

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

Exception in thread "main" java.lang.Error: 未解决的编译问题: 未处理异常类型 IOException

at DaysinaMonth.main(DaysinaMonth.java:9)

错误发生在这一行:

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

我对修复这个问题没有建议,但是根据提供的代码来看,运行时似乎是无用的,除非用于形成循环,但由于您没有将IP设置为随机生成的数字,因此没有理由这样做。


0
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 地址已经被更改,但不是按预期的方式。


0

我使用JNA(Java 17)编写了一个库,可以实现这个功能,希望有人能帮助我改进。
注意:目前仅支持Linux操作系统。
JSysBox

当前功能:

  • 网络
    1. 列出可用接口
    2. 设置/获取接口IP地址
    3. 接口统计信息
    4. 启用/禁用接口
    5. 添加/删除/列出路由(特定方法设置默认网关)
  • 文件系统
    1. 挂载/卸载/挂载点文件系统
    2. 设置/获取系统环境变量
    3. 设置/获取主机名
  • 日期和时间
    1. 设置/获取系统时区
    2. 设置/获取系统日期和时间
    3. 将系统同步到硬件时钟(类似于:hwclock --systohc)
    4. 将硬件时钟同步到系统时钟(类似于:hwclock --hctosys)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接