# Java IP Adressen ermitteln?



## Funresort (17. Dezember 2013)

Sers 

hat jemand ne Idee wie ich IPv4 Adressen und MAC Adrassen in Java ermittle? (Außer über Consolenabfrage)

mfg. Chris 

Ps: Über die Standard Klassen funktioniert es irgendwie nicht...


```
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Arrays;
import java.util.Collections;
import java.util.Enumeration;

public class NetworkUtil {

	public static void main(String args[]) throws SocketException {
		Enumeration<NetworkInterface> nets = NetworkInterface
				.getNetworkInterfaces();
		for (NetworkInterface netint : Collections.list(nets)) {
				System.out.println("Name:        " + netint.getDisplayName());
				System.out.println("Mac-Adresse: "
						+ Arrays.toString(netint.getHardwareAddress()));
				System.out.println(netint.getInetAddresses());
		}
	}
}
```


----------



## Thomas Darimont (17. Dezember 2013)

Hallo,

schau mal hier:

```
package de.tutorials.training;

import java.net.*;
import java.util.Collections;

public class GetMacAddressExample {

    public static void main(String[] args) throws Exception{

        for(NetworkInterface ni : Collections.list(NetworkInterface.getNetworkInterfaces())){
            System.out.printf("%s IP: %s MAC: %s%n",ni.getDisplayName(), extractPrimaryIPAddress(ni, Inet4Address.class), extractMacStringFrom(ni));
        }
    }

    private static <AddressType extends InetAddress> AddressType extractPrimaryIPAddress(NetworkInterface ni, Class<AddressType> addressType) {

        for(InterfaceAddress ia : ni.getInterfaceAddresses()){
            if(addressType.equals(ia.getAddress().getClass())){
                return addressType.cast(ia.getAddress());
            }
        }

        return null; //UNKNOWN IP
    }

    private static String extractMacStringFrom(NetworkInterface ni) throws SocketException {

        byte[] hardwareAddress = ni.getHardwareAddress();

        if (hardwareAddress == null ){
            return "UNKNOWN MAC";
        }

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < hardwareAddress.length; i++) {
            sb.append(String.format("%02X%S", hardwareAddress[i], i < hardwareAddress.length - 1 ? "-" : ""));
        }

        return sb.toString();
    }
}
```

Gruß Tom


----------



## Funresort (17. Dezember 2013)

mhm selbes Problem wie bei meinem Coding, bekomme nur die Netzinterne IP Adresse heraus und die hilft mir leider nicht viel weiter...


----------



## Thomas Darimont (17. Dezember 2013)

Hallo,

was meinst du denn mit "Netzinterne IP"?

Gruß Tom


----------



## Funresort (17. Dezember 2013)

Software Loopback Interface 1 IP: /127.0.0.1 MAC: 
Microsoft Kerneldebugger-Netzwerkadapter IP: null MAC: UNKNOWN MAC
*Qualcomm Atheros AR9485-Funknetzwerkadapter IP: /192.168.178.22 MAC: 24-FD-52-3C-CC-7C*
Controller der Familie Realtek PCIe GBE IP: null MAC: 74-D0-2B-B6-97-AB
Microsoft-ISATAP-Adapter IP: null MAC: 00-00-00-00-00-00-00-E0
Microsoft-ISATAP-Adapter #3 IP: null MAC: UNKNOWN MAC
Microsoft-ISATAP-Adapter #4 IP: null MAC: UNKNOWN MAC
Teredo Tunneling Pseudo-Interface IP: null MAC: 00-00-00-00-00-00-00-E0
Virtueller Microsoft-Adapter für direktes WiFi IP: null MAC: 16-FD-52-3C-CC-7C
Controller der Familie Realtek PCIe GBE-WFP Native MAC Layer LightWeight Filter-0000 IP: null MAC: UNKNOWN MAC
Controller der Familie Realtek PCIe GBE-QoS Packet Scheduler-0000 IP: null MAC: UNKNOWN MAC
Controller der Familie Realtek PCIe GBE-WFP 802.3 MAC Layer LightWeight Filter-0000 IP: null MAC: UNKNOWN MAC
Qualcomm Atheros AR9485-Funknetzwerkadapter-WFP Native MAC Layer LightWeight Filter-0000 IP: null MAC: UNKNOWN MAC
Qualcomm Atheros AR9485-Funknetzwerkadapter-Virtual WiFi Filter Driver-0000 IP: null MAC: UNKNOWN MAC
Qualcomm Atheros AR9485-Funknetzwerkadapter-Native WiFi Filter Driver-0000 IP: null MAC: UNKNOWN MAC
Qualcomm Atheros AR9485-Funknetzwerkadapter-QoS Packet Scheduler-0000 IP: null MAC: UNKNOWN MAC
Qualcomm Atheros AR9485-Funknetzwerkadapter-WFP 802.3 MAC Layer LightWeight Filter-0000 IP: null MAC: UNKNOWN MAC
Virtueller Microsoft-Adapter für direktes WiFi-WFP Native MAC Layer LightWeight Filter-0000 IP: null MAC: UNKNOWN MAC
Virtueller Microsoft-Adapter für direktes WiFi-Native WiFi Filter Driver-0000 IP: null MAC: UNKNOWN MAC
Virtueller Microsoft-Adapter für direktes WiFi-QoS Packet Scheduler-0000 IP: null MAC: UNKNOWN MAC
Virtueller Microsoft-Adapter für direktes WiFi-WFP 802.3 MAC Layer LightWeight Filter-0000 IP: null MAC: UNKNOWN MAC


93.104.18.69
Meine Ip ist aber diese hier


----------



## sheel (17. Dezember 2013)

Du willst also die IP, die dein Router vom Provider aus hat.
Bzw. die IP, die der Router zu einem Außen (was auch immer das ist) hat.

Und die praktisch einzige Lösung ist, sich irgendwo hin zu verbinden
(etwas außerhalb des eigenen Netzes) und sich anhand der Verbindung die IP sagen lassen.

Es ist nämlich zB. nicht sicher, dass das Außen vom ersten Router unterwegs
schon das weltweite Internet ist. In einem größeren Netzwerk mit vielen Routern
hast du evt. nur eine weitere interne IP dort.


----------



## Thomas Darimont (17. Dezember 2013)

Hallo,

schau mal hier:
http://stackoverflow.com/a/14541376/2123680

Gruß Tom


----------



## Funresort (17. Dezember 2013)

thx funktioniert )) genau das hab ich gesucht


----------

