/* * This file is part of JGAP. * * JGAP offers a dual license model containing the LGPL as well as the MPL. * * For licensing information please see the file license.txt included with JGAP * or have a look at the top of class org.jgap.Chromosome which representatively * includes the JGAP license policy applicable for any file delivered with JGAP. */ package org.jgap.util; import java.net.*; import java.io.*; /** * Houses network related functionality. * * @author Klaus Meffert * @since 2.4 */ public final class NetworkKit { /** String containing the CVS revision. Read out via reflection!*/ private final static String CVS_REVISION = "$Revision: 1.5 $"; /** * Private constructor because it's a utility class. */ private NetworkKit() { } /** * @return IP address string in textual presentation * @throws UnknownHostException * * @author Klaus Meffert * @since 2.4 */ public static String getLocalIPAddress() throws UnknownHostException { return InetAddress.getLocalHost().getHostAddress(); } /** * @return name of the computer calling this function locally * @throws UnknownHostException * * @author Klaus Meffert * @since 2.4 */ public static String getLocalHostName() throws UnknownHostException { return InetAddress.getLocalHost().getHostName(); } /** * Taken and adapted from UUID. * * @return MAC address of the current computer. * * @since 3.3.3 */ public static String getMACAddress() { String macAddress = null; Process p = null; BufferedReader in = null; try { String osname = System.getProperty("os.name"); if (osname.startsWith("Windows")) { p = Runtime.getRuntime().exec( new String[] {"ipconfig", "/all"}, null); } // Solaris code must appear before the generic code else if (osname.startsWith("Solaris") || osname.startsWith("SunOS")) { String hostName = SystemKit.getFirstLineOfCommand(new String[] {"uname", "-n"}); if (hostName != null) { p = Runtime.getRuntime().exec( new String[] {"/usr/sbin/arp", hostName}, null); } } else if (new File("/usr/sbin/lanscan").exists()) { p = Runtime.getRuntime().exec( new String[] {"/usr/sbin/lanscan"}, null); } else if (new File("/sbin/ifconfig").exists()) { p = Runtime.getRuntime().exec( new String[] {"/sbin/ifconfig", "-a"}, null); } if (p != null) { in = new BufferedReader(new InputStreamReader( p.getInputStream()), 128); String l = null; while ( (l = in.readLine()) != null) { macAddress = StringKit.parse(l); if (macAddress != null && NumberKit.parseShort(macAddress) != 0xff) break; } } } catch (SecurityException ex) {} catch (IOException ex) {} finally { if (p != null) { if (in != null) { try { in.close(); } catch (IOException ex) {} } try { p.getErrorStream().close(); } catch (IOException ex) {} try { p.getOutputStream().close(); } catch (IOException ex) {} p.destroy(); } } return macAddress; } public static void main(String[] args) { System.out.println(getMACAddress()); } }