Guten Abend!
Bevor ich genau auf das Problem eingehe kurz zum drumherum.
Ich möchte überprüfen, auf welchen Computern in einem Netzwerk, meine Anwendung läuft.
Meine Idee dazu: versuchen ein Socket zu dem bestimmten Port
(auf dem die Anwendung lauft) zu erstellen und wenn dies gelingt weiß ich das
dort das Programm drauf ist. So weit so gut.
Ich weiß nicht ob ich den richtigen Ansatz habe oder ob das schon am Ziel vorbeigeschossen ist.
Auf jeden Fall habe ich das ausprobiert und damit es möglichst schnell geht folgendermaßen realisiert:
Ich laufe in einer Schleife von 1-255 durch und baue immer eine verbindung mit
auf. Wobei xxxx der Port ist auf dem die Anwendung läuft und 50 das max Timeout.
So nun zum Problem:
(Annahme) auf meinem Rechner (10.0.0.59) läuft die Anwendung.
Wenn ich nun das Programm von 1-255 durchlaufen lasse bekomme ich bei jedem ein connect timeout.
Wenn ich es aber nur von 50-60 laufen lasse dann findet es den Server.
Ich habe dann ein bisschen herumprobiert
und immer wenn ich <=10 IP-Adressen suche kann es darunter die Server ausmachen, sobald ich mehr also 10 durchgänge mache findet es keinen.
Woran kann das liegen?
Zur Übersicht nochmal der vereinfachte Programmausschnitt:
wobei lookUp so aussieht:
Die Ip-Adressen werden mit
alle richtig erstellt (10.0.0.1-255)
Ich hoffe ich konnte das Problem verständlich schildern und
freue mich auf baldige Rückmeldung.
mfg nO-0n3
Bevor ich genau auf das Problem eingehe kurz zum drumherum.
Ich möchte überprüfen, auf welchen Computern in einem Netzwerk, meine Anwendung läuft.
Meine Idee dazu: versuchen ein Socket zu dem bestimmten Port
(auf dem die Anwendung lauft) zu erstellen und wenn dies gelingt weiß ich das
dort das Programm drauf ist. So weit so gut.
Ich weiß nicht ob ich den richtigen Ansatz habe oder ob das schon am Ziel vorbeigeschossen ist.
Auf jeden Fall habe ich das ausprobiert und damit es möglichst schnell geht folgendermaßen realisiert:
Ich laufe in einer Schleife von 1-255 durch und baue immer eine verbindung mit
Java:
s.connect(new InetSocketAddress(ip,xxxx),50);
So nun zum Problem:
(Annahme) auf meinem Rechner (10.0.0.59) läuft die Anwendung.
Wenn ich nun das Programm von 1-255 durchlaufen lasse bekomme ich bei jedem ein connect timeout.
Wenn ich es aber nur von 50-60 laufen lasse dann findet es den Server.
Ich habe dann ein bisschen herumprobiert
und immer wenn ich <=10 IP-Adressen suche kann es darunter die Server ausmachen, sobald ich mehr also 10 durchgänge mache findet es keinen.
Woran kann das liegen?
Zur Übersicht nochmal der vereinfachte Programmausschnitt:
Java:
for(int i=0;i<255;i++) {
ip.replace(lastpos,ip.length(),""+i);
if(lookUp(ip.toString())) {
System.out.print(ip+": SERVER");
}
else System.out.println(ip+": nothing");
}
wobei lookUp so aussieht:
Java:
boolean lookUp(String ip) {
boolean found;
Socket s = new Socket();
try {
s.connect(new InetSocketAddress(ip,xxxx),50);
found=true;
}
catch(IOException ioe) {
found = false;
}
finally {
try { if(s!=null) s.close(); }
catch(IOException ioe) {
System.err.println(ioe.getMessage());
}
}return found;
}
Die Ip-Adressen werden mit
Java:
ip.replace(lastpos,ip.length(),""+i);
Ich hoffe ich konnte das Problem verständlich schildern und
freue mich auf baldige Rückmeldung.
mfg nO-0n3
Zuletzt bearbeitet: