PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [JAVA] Aktives Networkinterface herausfinden


Er
2010-11-14, 20:14:56
Hi,

ich sitze hier an einem Rechner, der drei Netzwekkarten besitzt (wlan etc.) und einige Tunnel-Adapter.

Ich versuche nun schon eine ganze weile Programmatisch herauszufinden, welches das gerade aktive Interface ist (also das mit dem Internet-Zugang).

Mein Ansatz war es, durch einen HTTP-Request die externe IP zu ermitteln und durch "NetworkInterface.getByInetAddress(xxx)" das dazugehörige Interface zu bekommen. Das Problem ist allerdings, dass ich hinter einem Router sitze und dadurch das aktive Interface nicht mit der externen IP belegt ist sondern mit 192.168..., wodurch ich immer null bekomme.

Hat hierbei jemand eine Idee, wie ich Programmatisch das aktive Interface herausfinden kann?


MFG

Coda
2010-11-14, 21:26:17
Es gibt technisch aus Sicht von IP nicht "das Internet". Was du willst ist das Interface mit einer Route zu einer bestimmten IP-Adresse.

Du machst also eine UDP-Connection zu der IP die du erreichen willst (DatagramSocket) und fragst dann nach getLocalAddress() und schließlich bekommst du das IFace über NetworkInterface.getByInetAddress().

Gast
2010-11-14, 23:15:36
Hi,
thx für deine Antwort.

Es gibt technisch aus Sicht von IP nicht "das Internet".
Joa, das ist mir klar. Ich wollte halt das NetworkInterface haben, welches den zugriff nach "draußen" hat.

Ich werd dann mal morgen deinen Vorschlag testen und berichten, falls ich daran scheitere :)

Coda
2010-11-15, 00:25:15
"draußen" ist halt so eine Sache. Theoretisch könnte man verschiedene Seiten auch über verschiedene IFaces erreichen.

Aber in der Regel dürfte das Interface was "google.com" sieht das richtige sein ;)