Ich brauche eine Funktion die mir die IP-Adressen aller im lokalen Subnetz befindlichen Rechner mit IP und Hostname ermittelt. Ich habe genau genommen schon eine lößung gefunden allerdings ist diese extrem langsam und für den praktischen Einsatz damit unbrauchbar, da ein voller durchlauf ca. 2 Stunden dauert.
Ich lasse eben einfach alle Adressen durchsuchen und schaue ob ein Hostname aufgelößt werden konnte aber das ist wie gesagt keine gute lößung, nur hab ich auch keinen besseren ansatz. Zum Testen wird das ergebnis vorerst lediglich in eine JList geschriben in der später auch alle vergbenen Adressen auswählbar sein sollen.
Java:
new Thread() {
@Override
public void run() {
boolean found = false;
DefaultListModel lm = new DefaultListModel();
l.setModel(lm);
byte[] b = {(byte)192, (byte)168, 0, 0};
for(int i = 0; i < 256; i++) {
b[2] = (byte)i;
for(int j = 0; j < 256; j++) {
b[3] = (byte)j;
try {
InetAddress addr = InetAddress.getByAddress(b);
if(!addr.getHostName().trim().equalsIgnoreCase(addr.getHostAddress().trim())) {
lm.addElement("Host: " + addr.getHostName() + " Adresse: " + addr.getHostAddress());
} else {
continue;
}
found = true;
} catch (UnknownHostException e1) {
continue;
}
}
}
if(found == false) {
lm.addElement("Keine Adressen gefunden");
}
}
}.start();
Ich lasse eben einfach alle Adressen durchsuchen und schaue ob ein Hostname aufgelößt werden konnte aber das ist wie gesagt keine gute lößung, nur hab ich auch keinen besseren ansatz. Zum Testen wird das ergebnis vorerst lediglich in eine JList geschriben in der später auch alle vergbenen Adressen auswählbar sein sollen.