tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
1315
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Memphis01 Memphis01 ist offline Mitglied
    Registriert seit
    Aug 2008
    Beiträge
    15
    Hi liebe Community,

    ich bin gerade an einem Projekt daran bei dem ich auf folgendes Problem gestoßen bin.

    Ich benötige für mein Projekt Kommunikation die über Sockets und IPs funktioniert. Doch nun benötigte ich eine VM-Ware und habe mich für VirtualBox entschieden.
    Seit der Installation funktioniert leider gar nix mehr so wie es sollte.

    Da ich mit VirtualBox nun auch 2 virtuelle Netzwerkkarten habe, ist das Problem das mein Rechner die falsche Netzwerkkarte in meinem Projekt erkennt, somit eine Falsche IP bezieht und versendet und das legt wiederum die gesamte Kommunikation zwischen den Rechnern lahm, da kein Rechner auf die IP antwortet auf die er sollte.


    IPConfig – all
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    
    Windows-IP-Konfiguration
      
     Hostname  . . . . . . . . . . . . : NBWINDOWS7PRO
       Primäres DNS-Suffix . . . . . . . :
       Knotentyp . . . . . . . . . . . . : Hybrid
       IP-Routing aktiviert  . . . . . . : Nein
       WINS-Proxy aktiviert  . . . . . . : Nein
     
    Drahtlos-LAN-Adapter WLAN:
       Verbindungsspezifisches DNS-Suffix:
       Beschreibung. . . . . . . . . . . : Realtek RTL8191SE Wireless LAN 802.11n PCI-E NIC
       Physikalische Adresse . . . . . . : 1C-4B-D6-4C-36-B9
       DHCP aktiviert. . . . . . . . . . : Ja
       Autokonfiguration aktiviert . . . : Ja
       IPv4-Adresse  . . . . . . . . . . : 192.168.100.11(Bevorzugt)
     
    Ethernet-Adapter LAN:
       Medienstatus. . . . . . . . . . . : Medium getrennt
       Verbindungsspezifisches DNS-Suffix:
       Beschreibung. . . . . . . . . . . : Marvell Yukon 88E8057 PCI-E Gigabit Ethernet Controller
       Physikalische Adresse . . . . . . : 00-1F-16-31-54-09
       DHCP aktiviert. . . . . . . . . . : Ja
       Autokonfiguration aktiviert . . . : Ja
     
    Ethernet-Adapter VirtualBox Host-Only Network:
       Verbindungsspezifisches DNS-Suffix:
       Beschreibung. . . . . . . . . . . : VirtualBox Host-Only Ethernet Adapter
       Physikalische Adresse . . . . . . : 08-00-27-00-28-7B
       DHCP aktiviert. . . . . . . . . . : Nein
       Autokonfiguration aktiviert . . . : Ja
       IPv4-Adresse  . . . . . . . . . . : 192.168.56.1(Bevorzugt)

    Verbunden bin ich über die WLAN-Karte, ab und an auch per LAN, doch leider bekomm ich in Java nur die IP der Virtuellen Netzwerkkarte angezeigt

    InetAddress.getLocalHost()

    Code :
    1
    
    NBWINDOWS7PRO/192.168.56.1

    Eine Auflistung der Netzwerkkarten in Java sieht wie folgt aus
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    Name:       eth3
    Display:    Marvell Yukon 88E8057 PCI-E Gigabit Ethernet Controller
    Loopback:   false
    Up:     true
    Virtual:    false
    MAC:        08002700287B
     
    Name:       net4
    Display:    Realtek RTL8191SE Wireless LAN 802.11n PCI-E NIC
    Loopback:   false
    Up:     true
    Virtual:    false
    MAC:        08002700287B
     
    Name:       eth7
    Display:VirtualBox Host-Only Ethernet Adapter
    Loopback:   false
    Up:     true
    Virtual:    false
    MAC:        08002700287B

    Hierbei sollte auffallen, das jede Netzwerkkarte die selbe MAC-Adresse hat und dies auch die MAC-Adresse der VirtualBox Netzwerkkarte ist. Warum das so ist kann ich mir nicht erklären.

    Gibt es eine Möglichkeit eine bestimmte Netzwerkkarte auszuwählen, außer über die Namen („eth0“, „eth1“, …). Am liebsten wäre mir die Eingabe einer MAC-Adresse da ich so genau bestimmen könnte welche Netzwerkkarte ich verwenden will.
    Selbst ds umstellen der Prioritäten in Windows hat nichts gebracht, ich kann lediglich die Virtuelle Netzwerkkarte ausschalten dann funktioniert es. Da ich aber die Virtuelle-Netzwerkkarte brauche, kommt dies nicht in Frage.

    Ich muss doch irgendwie beeinflussen können, auf welche Netzwerkkarte Java zugreift, dies sollte idealerweise per MAC-Adresse passieren, da eth1 in Windows nur schlecht nachvollziehbar ist.
    So dass ich durch den Aufruf von InetAddress.getLocalHost() auch die entsprechende und damit richtige IP verwende.

    Ich benötige hierbei dringend Hilfe, da ich an meinem Projekt nicht weitermachen kann ohne über diesen Schatten gesprungen zu sein. Da die Kommunikation zwischen Rechnern eine Grundlegende Sache in meinem Projekt ist.

    Mit bestem Dank

    Memphis01
     

  2. #2
    Avatar von Franz Degenhardt
    Franz Degenhardt Franz Degenhardt ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Ort
    Köln
    Beiträge
    378
    Hallo,

    hast du dir die Eigenschaft HardwareAddress schonmal angeschaut? Laut api ist das die MAC Adresse.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
            try {
                Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
                while (networkInterfaces.hasMoreElements()) {
                    NetworkInterface networkInterface = (NetworkInterface) networkInterfaces.nextElement();
                    byte[] hardwareAddress = networkInterface.getHardwareAddress();
                    if (null != hardwareAddress) {
                        for (int i = 0; i < hardwareAddress.length; i++) {                      
                            System.out.print(Integer.toHexString(hardwareAddress[i]));
                        }
                        System.out.println("\n");
                    }
                }
            } catch (SocketException e) {
                e.printStackTrace();
            }

    Ausgabe:
    Code :
    1
    2
    3
    4
    5
    
    01dffffff9266ffffff830
     
    2054554e1
     
    0000000ffffffe0

    Bis auf die vielen f stimmt das mit meinen mac Adressen überein. Evtl stimmt was mit dem toHexString nicht.

    Zum bestimmen welches Interface verwendet werden soll kann man bei der Verwendung von Sockets mit angeben:

    Code :
    1
    2
    
    Socket soc = new java.net.Socket();
    soc.bind(networkInterface.nextElement());

    Dann könnte man über die Interfaces iterieren, das richtige raussuchen anhand der mac und danach den Socket binden.
    Geändert von Franz Degenhardt (21.05.10 um 18:48 Uhr)
     
    Denken gefärdet die Gewohnheit

  3. #3
    Memphis01 Memphis01 ist offline Mitglied
    Registriert seit
    Aug 2008
    Beiträge
    15
    Hi,

    ja ich hatte mir die APi schon angeschaut und an dem problemm sitzt ich nun knapp 1 Woche und es tut mir leid,

    aber selbst wenn ich den von dir hier gepostete Code einsetze

    bekomm ich als ausgabe nur

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
     
    80270287b
     
    80270287b
     
    80270287b
     
    80270287b

    Das heisst alle NICs haben schon wieder die selbe MAC und wieder die MAC der VirtualBox NIC

    Woran kann das liegen, irgendwas läuft doch da grundlegend schief.

    Ich hab deinen Code 1:1 in ne Testdatei gepastet und o.g. als Ergebnis bekommen.
    Geändert von Memphis01 (21.05.10 um 19:09 Uhr)
     

  4. #4
    Memphis01 Memphis01 ist offline Mitglied
    Registriert seit
    Aug 2008
    Beiträge
    15
    Kann mir jemand weiterhelfen ...

    Ich bekomm egal was ich auch mache immer die MAC Adresse der Virtuellen Netzwerkkarte (in VirtualBox bridged) auf alle anderen Angezeigt, dementsprechend kann ich keinen Zugriff auf das richtige Netzwerk-Interface machen und komm nicht ausserhalb meines Rechners.

    Kann mir bitte jemand weiterhelfen
     

Ähnliche Themen

  1. Zuordnung NetworkInterface zu IP Adresse
    Von MikeBi im Forum .NET Web und Kommunikation
    Antworten: 3
    Letzter Beitrag: 05.12.10, 18:53
  2. Antworten: 3
    Letzter Beitrag: 11.11.09, 12:49
  3. char mit Adresse -> int mit Adresse
    Von MSAB im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 07.01.07, 20:26
  4. Auflösung IP Adresse von Mac Adresse
    Von snowdog im Forum Microsoft Windows
    Antworten: 27
    Letzter Beitrag: 10.08.05, 15:16
  5. Antworten: 1
    Letzter Beitrag: 18.12.04, 16:30

Stichworte