JAVA分别实现Windows平台和Linux平台下的ip获取

一般我们很容易获取Windows系统下的ip信息,比如:package com.han;import java.net.InetAddress;import java.net.UnknownHostException;/** * 程序实现了Windows平台下获得本机ip地址 * @author HAN * */public class InetAddressObtain
摘要由CSDN通过智能技术生成

一般我们很容易获取Windows系统下的ip信息,比如:

package com.han;
import java.net.InetAddress;
import java.net.UnknownHostException;

/**
 * 程序实现了Windows平台下获得本机ip地址
 * @author HAN
 *
 */
public class InetAddressObtainment_Windows {
	String hostname;
	String hostaddress;
	void initialize(){
		try {
			InetAddress ia=InetAddress.getLocalHost(); //获得本机网络地址对象
			hostname=ia.getHostName(); //获得对应主机名
			hostaddress=ia.getHostAddress(); //获得对应主机地址
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static void main(String[] args){
		InetAddressObtainment_Windows o1=new InetAddressObtainment_Windows();
		System.out.println(o1.hostname);
		System.out.println(o1.hostaddress);
		o1.initialize();
		System.out.println(o1.hostname);
		System.out.println(o1.hostaddress);
	}
}


但是我们确发现在Linux下运行上面的代码确实获得我的本机Linux默认设定的地址(Linux中有一文件自动使用了ip变换

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Windows下的Java项目中调用Linux下的shell脚本,需要使用Java中的ProcessBuilder类或Runtime类来执行shell命令。 首先,确保你已经安装了Java运行时环境,并且已经设置好了虚拟机IP。然后,可以按照以下步骤来编写Java代码: 1. 创建一个ProcessBuilder对象,并设置其command属性为要执行的shell命令。例如,要执行一个名为test.sh的shell脚本,可以将command属性设置为以下内容: ``` ProcessBuilder pb = new ProcessBuilder("ssh", "your_username@your_linux_machine_ip", "/path/to/test.sh"); ``` 其中,your_username是你在Linux机器上的用户名,your_linux_machine_ipLinux机器的IP地址,/path/to/test.sh是要执行的shell脚本的路径。 2. 设置ProcessBuilder对象的工作目录。如果有必要,可以设置ProcessBuilder对象的工作目录,使其为shell脚本提供必要的上下文环境。例如,如果shell脚本需要在某个目录下执行,可以将工作目录设置为该目录: ``` pb.directory(new File("/path/to/directory")); ``` 3. 启动shell脚本。可以使用ProcessBuilder对象的start()方法来启动shell脚本: ``` Process p = pb.start(); ``` 4. 处理shell脚本的输出。一旦shell脚本开始执行,就可以通过Process对象来获取它的输出。例如,要读取shell脚本的标准输出,可以使用以下代码: ``` InputStream stdout = p.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(stdout)); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } ``` 5. 等待shell脚本执行完毕。可以使用Process对象的waitFor()方法来等待shell脚本执行完毕: ``` p.waitFor(); ``` 完整的Java代码示例: ``` import java.io.BufferedReader; import java.io.File; import java.io.InputStream; import java.io.InputStreamReader; public class ShellCommandExecutor { public static void main(String[] args) throws Exception { ProcessBuilder pb = new ProcessBuilder("ssh", "your_username@your_linux_machine_ip", "/path/to/test.sh"); pb.directory(new File("/path/to/directory")); Process p = pb.start(); InputStream stdout = p.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(stdout)); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } p.waitFor(); } } ``` 注意:在Windows下调用Linux的shell脚本需要安装SSH客户端程序,例如PuTTY或Git Bash。同时,你需要在Linux上安装OpenSSH服务器,并确保你的用户名和密码正确。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值