获取Unix hostid到Java【JAVA教程】

!
也想出现在这里? 联系我们
信息

获取Unix hostid到Java,第1张

概述获取Unix hostid到Java

如何通过某种方式将unix hostID变成Java?

http://linux.about.com/library/cmd/blcmdl1_hostID.htm

如何清除JBoss中的server.log?

共享库 – 64位Ubuntu上的Java 32位

如何在linux上编译一个JNI应用程序的dynamic库?

在windows中使用ProcessBuilder执行命令

如何在windows上使用单一命令行编译和运行Java

如果以前调用sethostID(long int ID) ,它将驻留在HOSTIDfile ,通常是/etc/hostID 。

如果不在那里,则获取机器的主机名。 你把主机名的地址拉出来,如果是IPv4的话,就是将IPv4地址从点分十进制格式化为二进制格式,前16位和下16位交换。

InetAddress addr = InetAddress.getLocalHost(); byte[] ipaddr = addr.getAddress(); if (ipaddr.length == 4) { int hostID = 0 | ipaddr[1] << 24 | ipaddr[0] << 16 | ipaddr[3] << 8 | ipaddr[2]; StringBuilder sb = new StringBuilder(); Formatter formatter = new Formatter(sb,Locale.US); formatter.format(\”%08x\”,hostID); System.out.println(sb.toString()); } else { throw new Exception(\”hostID for IPv6 addresses not implemented yet\”); }

恐怕你将不得不写JNI(或JNA )。

也许下面的文章将有所帮助。

http://www.devdaily.com/java/java-exec-processbuilder-process-1

调用Runtime.exec(String)其中参数是“hostID”可执行文件的路径,然后排出生成的Process对象的两个流,并将标准输出流的内容作为字符串值。

这个简单的类演示了如何实现这个策略(但是需要改进错误处理[例如stderr,exceptions]和OOP最佳实践[例如返回一个带有bean属性的对象]]:

public class runcommand { public static String exec(String command) throws Exception { Process p = Runtime.getRuntime().exec(command); String stdout = drain(p.getinputStream()); String stderr = drain(p.getErrorStream()); return stdout; // Todo: return stderr also… } private static String drain(inputStream in) throws IOException { int b = -1; StringBuilder buf = new StringBuilder(); while ((b=in.read()) != -1) buf.append((char) b); return buf.toString(); } }

你的程序可以这样使用它:

String myHostID = runcommand.exec(\”/usr/bin/hostID\”).trim();

请注意,如果您的命令需要参数或环境等,使用ProcessBuilder创建Process可能比Runtime.exec()更合适。

尝试一下(当然包装在一些课堂上):

import java.net.InetAddress; import java.net.UnkNownHostException; public static String getLocalHostIP() throws UnkNownHostException { InetAddress ip; ip = InetAddress.getLocalHost(); return ip.getHostAddress(); }

该方法返回一个形式为“xxx.xxx.xxx.xxx”的字符串。

UPDATE

改进的方法是:

// Determine the IP address of the local host public static String getLocalHostIP() { try { return InetAddress.getLocalHost().getHostAddress(); } catch (UnkNownHostException ex) { return null; } }

总结

以上是内存溢出为你收集整理的获取Unix hostid到Java全部内容,希望文章能够帮你解决获取Unix hostid到Java所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞144 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容