Netzwerk-IP´s sammeln

Status
Nicht offen für weitere Antworten.
B

B00n

Gast
Aloa Gemeinschaft,
wollt mal fragen, ob es mit Java möglich ist, die gesammten IP´s, die im gleichen Netzwerk sind, wie der User meines Progs, zu sammeln... vll irgendeine Methode schon von Java vorgegeben?

Das ping-Beispiel will ich nicht nehmen (gucken, ob die Ping-Abfrage beantwortet wird)

THX B00n
 
S

stiewen

Gast
LOL eben genau das hab ich doch euch gefragt oder? :-D
hat Java keine Methode "getIPs" oder so???
Und mit Ping wollte ich nicht arbeiten, weil das zu lange dauert, erst alle IPs durchzugehen ...
 

Grizzly

Top Contributor
stiewen hat gesagt.:
LOL eben genau das hab ich doch euch gefragt oder? :-D
hat Java keine Methode "getIPs" oder so???
Und mit Ping wollte ich nicht arbeiten, weil das zu lange dauert, erst alle IPs durchzugehen ...
Du willst also keine Verbindung zu den Rechnern aufbauen und trotzdem ihre IPs wissen? Naja, eine Möglichkeit wäre am Netzwerk zu lauschen. Ab und zu kommt dann ein Paket vorbei, das zwar nicht für den eigenen Rechner ist, aber das ist ja egal. Und dort steht ja eine Absender IP drin. Die kann man sich dann merken.

Die Sache hat allerdings drei Schönheitsfehler:
1.) Mit Java hat man keine Möglichkeit auf so tiefe Funktionen zuzugreifen.
2.) Das Lauschen würde ewig brauchen. Und wenn ein Rechner zwar im Netz ist, aber toter Mann spielt, bekommst Du dessen IP auch nicht mit.
3.) Wenn Du irgendwelche Netzwerk-Hardware zwischen den Rechnern hast, die nicht jedes IP Paket in jeden Winkel des Netzwerkes schickt, dann bekommst Du von einigen Rechner auch nichts mit. Ich denke hier an Switches, Router & Co.
 

Illuvatar

Top Contributor
So eine Methode gibt es in keiner Programmiersprache. Windows stellt so eine Fuktionalität bereit, wenn du mit Runtime#exec "net view" aufrufst, dann gibt dir Windows eine Liste mit allen Namen der Computer zurück, das müsstest du eben parsen, mit der Klasse InetAddress kommst du ja dann auch an die IPs.

Das sinnvollste ist so eine ping Methode afaik dennoch. Eine sehr gute Implementierung von so etwas hat einmal jemand hier geschrieben: http://www.java-forum.org/de/viewtopic.php?t=13625

Dies funktioniert aber nur um wirklich Server zu finden, die dasselbe Programm am laufen haben. Für alle IPs musst du dann doch ein richtiges ping machen - aber es empfiehlt sich natürlich, alle gleichzeitig zu pingen, und nicht nacheinander.
 

Grizzly

Top Contributor
Illuvatar hat gesagt.:
So eine Methode gibt es in keiner Programmiersprache.
Naja, wie gesagt: Wenn man sehr Lowlevel auf die Netzwerkkarte zugreift, könnte man den gesamten Netzwerkverkehr im eigenen Segment abhören.

Und net view funktioniert nur in einem reinen Windows Netzwerk. Sobald Du andere IP Geräte drin hast, bekommst Du schon nicht mehr alle (bspw. Print Server).
 
B

Bßßn

Gast
Sag mal Grizzly, find ich ja toll, was du so alles weißt, aber hab ich irgendwo gesagt, dass ich im Net lauschen will? Ich habe lediglich gefragt, ob Java sowas bereitstellt... ein "nein" hätte auch gereicht!

So, ...

Ich hab mal hier geschaut und mir das zum implementieren heruntergeladen: www.galileocomputing.de/openbook/javainsel2/java_160014.htm#Rxxjava_160014258Ping

jedoch ist dort ja auch eine dll datei... Wenn ich aber mein Prog an andere Leute weiter gebe, müssen die diese ja immer in den Windows ordner reinpacken oder? Oder muss ich da an eine install meines progs denken, die die dll installt?
 
B

B00n

Gast
So, nachdem ich was für Java gefuden hab, (ICMP) hab ich aber nen Prob damit:

Code:
      int inTemp = 0;
      String strparent = "";
      StringTokenizer stparent = new StringTokenizer(net.getHostAddress(), ".");
      while ( inTemp < 3 ) {
        if ( stparent.hasMoreElements() ) {
          strparent += stparent.nextToken() + ".";
        }
        inTemp++;
      }
      inTemp = 0;
      PingICMP ping = new PingICMP();
      ping.begin();
      while ( inTemp < 256 ) {
        if ( ping.ping(strparent + inTemp, 5, 1) ) {
          /* HashMap: Key = Number; Value = IP */
          frmain.hmIPs.put(inTemp + "", strparent + inTemp);
        }
        inTemp++;
      }

In der ersten schleife ermittle ich die IP bis zur Stelle, wo die eigene von allen Rechnern hinkommt...
In der zweiten schleife gehe ich alle IP durch und schaue, ob sie ansprechbar sind!

1. Kann mr einer sagen, für was die zahlen in der Methode PingICMP.ping(String, int, int) stehen? Was bewirken die???
2. beim Durchgehen der Schleife meint er, dass alle IP "anpingbar" sind! Wie kann das sein? Ich hab nur *.2 und *.4 im netzwerk hier...
 

Dante

Bekanntes Mitglied
jedes subnetz hat eine broadcast-adresse (x.x.x.255), wenn man die anpingt sollten alle rechner im subnetz antworten, klappt unter *nix zB. mit ping x.x.x.255 -b
 
S

stiewen

Gast
Hat den jemand noch eine andere Lösung, als die, die ich genannt habe oder wie muss ich meine Lösung noch verändern, dass sie funktioniert...
Ich will nur die IP haben, die im Netzwerk vergeben sind ...

THX
 

Murray

Top Contributor
PingICMP ist ja keine Standard-Library, da kann man erstmal nur raten (oder googeln). Meinst Du estadisticas.icmp.PingICMP?

In diesem Fall kehrt ping schon zurück, wenn es gelungen ist, das Paket erfolgreich zu versenden; das ist noch keine Garantie dafür, dass auch auch eine Antwort kommt. Um auf eine Antwort zu warten, braucht man die pong-Methode, die aber blockiert, so dass man sie in einen getrennten Thread aufrufen muss, wenn das Programm nicht endlos warten soll.
 

AlArenal

Top Contributor
Anmerkung:

Nicht jeder Rechner antwortet auf Ping....

Code:
ping [url]www.microsoft.de[/url]
 

Murray

Top Contributor
Seit dem JDK 1.5 gibt es in java.net.InetAddress die Methode isReachable. Das würde dann etwa so funktionieren:
Code:
import java.net.InetAddress;

public class Test {

	public static void main( String[] args) {
		try {
		
			
			InetAddress a = InetAddress.getLocalHost();
			
			//--- letztes Byte von 1..254 variieren
			byte[] ba = a.getAddress();
			for (byte i=1; i<255; i++) {
				ba[3] = i;
				a = InetAddress.getByAddress( ba);
				System.out.println( a + ":" + (a.isReachable( 2000) ? "reachable" : "unreachable"));
			}
		} catch ( Exception e) {
			e.printStackTrace();
		}
	}
}

Natürlich funktioniert auch das nicht immer und überall; es bleibt grundsätzlich auch der VM überlassen, wie das implementiert wird. Lt. Doku kann man wohl davon ausgehen, dass das per ICMP-ECHO oder alternativ einer Socket-Verbindung zu Port 7 passiert.
 

Illuvatar

Top Contributor
Nun ja, und wenn es da, sagen wir, 5 PCs im Netzwerk gibt, muss man nur noch 250 * 2 Sekunden auf die restlichen warten...
 

Murray

Top Contributor
Mit dem Timeout muss man natürlich etwas experimentieren; je nach Netz kommt man vermutlich auch mit deutlich geringeren Werten klar.

Sollte man so etwas aber wirklich praktisch nutzen wollen, so würde man vermutlich mehrere Threads parallel arbeiten lassen; man könnte auch mit einem kurzen Timeout beginnen, die Adressen, die geantwortet haben, "abhaken" und die restlichen mit einem höheren Timeout erneut angehen usw..

Das sind aber Optimierungen, die man machen kann, wenn sich die Vorgehensweise als solche im fraglichen Netz als tauglich erweist; vorher hat das keinen Sinn (und würde wohl auch den Rahmen dieses Threads sprengen).
 

Murray

Top Contributor
Ergänzung zum InetAddress-Beispiel: hier habe ich einen hübschen Anfängerfehler gemacht (schäm): die Schleife
Code:
for (byte i=1; i<255; i++) { 
  ba[3] = i;
terminiert nicht, da ein byte nie so groß werden kann (bei i<255 kommt ein impliziter Cast auf int ins Spiel).

Besser:
Code:
for (int i=1; i<255; i++) { 
  ba[3] =(byte) i;

//EDIT: Aussage korrigiert
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I ActiveMQ-Messages übers Netzwerk Netzwerkprogrammierung 13
M Socket Netzwerk Übertragung zwischen 4 Clients Netzwerkprogrammierung 2
temi (Netzwerk-) Kommunikation zwischen Anwendungen. Wie? Netzwerkprogrammierung 5
W Das Netzwerk entfernen mit Wifi Manager Netzwerkprogrammierung 1
F Neuronales Netzwerk - Genetischer Algorithmus Netzwerkprogrammierung 0
windl Sporadische Aussetzer im Netzwerk Netzwerkprogrammierung 10
T Broadcast-message über spez. Netzwerk-Schnittstelle Netzwerkprogrammierung 1
MaxG. Netzwerk Ping falsches ergebnis Netzwerkprogrammierung 7
T Netzwerk Login Felder ansprechen Netzwerkprogrammierung 1
B Netzwerk - Fernsteuerung Netzwerkprogrammierung 1
S Netzwerk-Framework gesucht Netzwerkprogrammierung 6
J Hilfe beim programmiern einer App zur Anmeldung im Wlan-Netzwerk Netzwerkprogrammierung 0
C Netzwerk Portzuweisungsproblem Netzwerkprogrammierung 0
I PingPong Spiel übers Netzwerk Netzwerkprogrammierung 1
M Verbindung zwischen zwei Pc in dem Selben Netzwerk Netzwerkprogrammierung 8
M PongSpiel Netzwerk Netzwerkprogrammierung 1
D Geräte im Lokalen netzwerk auflisten Netzwerkprogrammierung 1
fLooojava Daten an ein Arduino im selben Netzwerk senden Netzwerkprogrammierung 1
I Netzwerk FileShare Program Netzwerkprogrammierung 2
K ByteArray über Netzwerk senden klappt nicht Netzwerkprogrammierung 5
D Ermitteln ob WLAN-Netzwerk UDP unterstützt Netzwerkprogrammierung 1
O 4Gewinnt Multiplayer - Netzwerk Problem (TCP) Netzwerkprogrammierung 1
B WebSocket Verbindungsaufbau aus localen Netzwerk Netzwerkprogrammierung 2
S Bilder durch's Netzwerk usw ... Netzwerkprogrammierung 10
Kr0e Dezentrales Soziales Netzwerk Netzwerkprogrammierung 48
G Klassen über Netzwerk kommunizieren lassen Netzwerkprogrammierung 6
vandread Zugriff auf Soziales Netzwerk mittels Java? Netzwerkprogrammierung 4
P Automatische Host suche im Netzwerk Netzwerkprogrammierung 3
D Socket Class über Netzwerk verschicken Netzwerkprogrammierung 2
S Netzwerk Verbindungsproblem mit Cajo Netzwerkprogrammierung 5
c_sidi90 ideale Lösung, Screen Capture über Netzwerk Netzwerkprogrammierung 3
J Komplexes Netzwerk-Spiel im Internet Netzwerkprogrammierung 13
J ObjectInputStream im Netzwerk Netzwerkprogrammierung 8
T ArrayList über Netzwerk senden! Netzwerkprogrammierung 5
A java im netzwerk anderen rechner runterfahren Netzwerkprogrammierung 3
U Datei über das Netzwerk einlesen und speichern Netzwerkprogrammierung 8
M Netzwerk Programmierung Netzwerkprogrammierung 2
F Netzwerk-Designkonzept Netzwerkprogrammierung 2
D Ring-Netzwerk - wie fange ich an? Netzwerkprogrammierung 3
X Password übers Netzwerk schicken jPasswordField Netzwerkprogrammierung 2
M Socket Bilder über das Netzwerk übertragen Netzwerkprogrammierung 4
c_sidi90 Alle Rechner im Netzwerk ermitteln Netzwerkprogrammierung 17
D Netzwerk-To-Do-Liste Netzwerkprogrammierung 5
Semox Socket Selbstgeschriebenen Webserver im lokalen Netzwerk publizieren? Netzwerkprogrammierung 4
S Socket nach anderen clients im netzwerk suchen Netzwerkprogrammierung 3
T Netzwerk-Dateiübertragung optimieren Netzwerkprogrammierung 15
G Netzwerk Speed checken Netzwerkprogrammierung 3
L Socket Socketverbindung nur im lokalen Netzwerk Netzwerkprogrammierung 12
F Char über Netzwerk senden Netzwerkprogrammierung 6
P SocketServer im lokalen netzwerk suchen Netzwerkprogrammierung 2
I Objekte über das Netzwerk Netzwerkprogrammierung 5
B RMI RMI, Callback und Netzwerk Netzwerkprogrammierung 6
agent47 IP Adressen im Lokalen Netzwerk Scannen Netzwerkprogrammierung 7
S Netzwerk und Objekte Netzwerkprogrammierung 5
G Netzwerk IP Frage Netzwerkprogrammierung 4
Akrillo Datei per Netzwerk senden Netzwerkprogrammierung 10
W funktionen übers netzwerk nutzen Netzwerkprogrammierung 4
Kr0e Versenden von Daten übers Netzwerk Netzwerkprogrammierung 30
M upnp Device-Discovery im Netzwerk Netzwerkprogrammierung 5
T Administration von Software auf Clients im Netzwerk Netzwerkprogrammierung 6
H MySQL übers Netzwerk Netzwerkprogrammierung 9
A Probleme mit kleinem Netzwerk Programm Netzwerkprogrammierung 30
T Pfadangabe beim kopieren übers Netzwerk Netzwerkprogrammierung 5
G Verschlüsselte Strings über Netzwerk verschicken Netzwerkprogrammierung 19
D robustes Netzwerk Netzwerkprogrammierung 2
N HTML-Übertragung im lokalen Netzwerk mit Java - wie? Netzwerkprogrammierung 6
G Datei performant im Netzwerk verschieben Netzwerkprogrammierung 4
D BufferedImage über das Netzwerk senden Netzwerkprogrammierung 2
E Netzwerk Fehlererkennung Netzwerkprogrammierung 11
M Pc's im Netzwerk auflisten Netzwerkprogrammierung 2
T Welches Netzwerk ist am bestern für. Netzwerkprogrammierung 2
ModellbahnerTT Problem feste String ins Netzwerk zu geben Netzwerkprogrammierung 5
A IRC-Server für das lokale Netzwerk? Netzwerkprogrammierung 12
TheJavaKid Anzahl der Server im Netzwerk Netzwerkprogrammierung 7
R Spiel auf Netzwerk auslegen? Netzwerkprogrammierung 10
R Applet & Netzwerk Netzwerkprogrammierung 4
K netzwerk durchsuchen Netzwerkprogrammierung 10
A array übers netzwerk (anfänger) Netzwerkprogrammierung 8
T Möglichkeit über das Netzwerk eine Funktion zu starten? Netzwerkprogrammierung 2
flashfactor Dateien im Netzwerk kopieren Netzwerkprogrammierung 2
R File chooser übers Netzwerk Netzwerkprogrammierung 3
A Betriebssystem über Netzwerk ermitteln Netzwerkprogrammierung 11
S Netzwerk übers Internet Netzwerkprogrammierung 30
J Brauche hilfe bei Projekt: Netzwerk Chatprogramm Netzwerkprogrammierung 12
M anpingen, liste aller IPs im netzwerk erhalten Netzwerkprogrammierung 5
S Spiel über Netzwerk. Netzwerkprogrammierung 7
O wie schnell kann java netzwerk sein? Netzwerkprogrammierung 7
D Netzwerk Betrachtung mit vielen Clients Netzwerkprogrammierung 2
D Netzwerk Game, bitte hilfe. Netzwerkprogrammierung 2
L netzwerk mit thread Netzwerkprogrammierung 3
B Netzwerk simulieren Netzwerkprogrammierung 2
8 ByteArray per Netzwerk verschicken Netzwerkprogrammierung 6
P Serialialiserte Objekte übers Netzwerk verschicken Netzwerkprogrammierung 9
T Client-Authorisierung-Netzwerk Netzwerkprogrammierung 4
G Verzeichnis eines Rechners übers Netzwerk auslesen Netzwerkprogrammierung 5
B Netzwerk Dokumentation Netzwerkprogrammierung 2
G MySQL über Netzwerk --> Problem Netzwerkprogrammierung 13
M Netzwerk spiel??? Netzwerkprogrammierung 9
B Nachrichten über das Netzwerk verschicken Netzwerkprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben