Daten versenden über ein bestimmter netzwerk

mrno

Erfahrenes Mitglied
HI,
ich habe folgendes vor. Ich möchte mit dem Programm hamachi ein virtuelles netzwerk aufbauen. Fals ihr das Prggi net kennt hier der link http://www.hamachi.cc/. Wie kann ich jetzt meinem socket z.b. sagen das er die daten über das hamachi netzwerk sendet und nicht über das normal reale netzwerk.
Zur erklärung das hamachi netzwerk simuliert eine Netzwerkkarte und stellt so ein virtuelles locales netz her. Mit viruellen ip addressen und ports.
 
Moin!
Wenn das Programm eine Netzwerkkarte simuliert, solltest du die "bind" Methode der SocketKlassen nutzen, um diese an das entsprechende Netzwerkinterface zu binden...


*grüssle*
MeinerEiner
 
habe leider keine antwort wie ich das mache. Kannst du mir da ein beispiel geben. Auserdem wie bekomme ich die interfaces heraus? Gibt es da irgendeine möglichkeit die zu ermitteln? Mein zweiter gedanke war das der user sich eine Netzwerkinterface heraussuchen kann. Wie mache ich das?
 
Moin!
Alle lokale IP-Adressen und somit alle Netzwerkinterfaces erhält man so :
Code:
String localHost = InetAddress.getLocalHost().getHostName();
for(InetAddress ia : InetAddress.getAllByName(localHost)){
     System.out.println(ia);
}

Oder beispielsweise so:
Code:
Enumeration<InetAddress> enumeration = NetworkInterface.getInetAddresses();
while (enumeration.hasMoreElements()) {
    System.out.println(enumeration.next());
}
Eine dieser Addressen wird wohl deine virtuelle NetzwerkIP sein.

Und wie man die bind methode nutzt, sollte sich eigentlich aus der API erklären:
Code:
//Client 

Socket s = new Socket();
s.bind(new InetSocketAddress(yourVirtuellInetAddress,yourVirtuellPort));
s.connect(new InetSocketAddress(yourVirtuellServerInetAddress,yourVirtuellServerPort));

//Server
ServerSocket serverS = new ServerSocket();
serverS.bind(new InetSocketAddress(yourVirtuellServerInetAddress,yourVirtuellServerPort));

*grüssle*
MeinerEiner
 
Zuletzt bearbeitet von einem Moderator:
HI MeinerEiner_80,
danke für deine schnelle antwort. Leider habe ich immer noch Problem mit dem herausfinden der Netzwerkinterfaces. Habe jetzt deinen ersten Code genommen. Folgende ausgabe bekomme ich:
Code:
laptop/127.0.0.2
Eigendlich sollte es doch so aussehen das er z.b. bei meinem netzwerk spezifikationen die locale ip ausgibt "192.168.69.1". Alle weiteren Netzwerkinterfaces fehlen. Z.b. meine wlan karte wir auch nicht aufgeführt nur die Netzwerkkarte. Und seit wann ist der localhost 127.0.0.2 müsste doch eigendlich 127.0.0.1 sein?
 
Okay, der zweite Code schnipsel war mein Fehler, "getInetAddresses" ist nicht statisch..
Also probiers so:
Code:
Enumeration<NetworkInterface> enu =     NetworkInterface.getNetworkInterfaces();
        while(enu.hasMoreElements()){
            Enumeration<InetAddress> enumeration = enu.nextElement().getInetAddresses();
            while (enumeration.hasMoreElements()) {
                System.out.println(enumeration.nextElement());
            }
            
        }

Ausgabe:
Code:
/127.0.0.1
/192.168.1.22

Die zweite Addresse bekomme ich allerdings nur, wenn ich , die IP fest vergeben habe, und die Verbindung auch aktiv ist. Also eine Netzwerkkarte die nicht ans Netz angeschlossen und aktiv ist, wird nicht angezeigt..

*grüssle*
MeinerEiner
 
Zurück