Gute Nacht an alle,
mich beschäftigt ein Problem gerade: Multithreading.
Ich dachte ich hab mir schon das einfachste Versuchsbeispiel herausgepickt, aber ich irrte mich. Mein Beispiel sah so aus, dass ich einfach alle IP-Adressen in meinem home-Netz pinge um herauszufinden, welche meiner Rechner alle on sind. Kurz: Systemüberwachung meines Heimnetzes auf Verfügbarkeit.
Meine main-Klasse MultiPing erzeugt 31 Ping-Instanzen. Die Klasse Ping selber ruft im Konstruktor die eigene Run()-Methode auf. Normalerweise ist das ja schon in einem neuem Thread laufend oder lieg ich falsch mit dieser Behauptung? Der Punkt ist, dass nicht bei allen 31 IP-Adressen es gleichzeitig abgefragt wird, sondern eine nach der anderen. Das ist ärgerlich, denn 31x 3 Sekunden sind viel länger als 1x 3 Sekunden und dafür gleichzeitig 31 Pings. ==> Wie schaffe ich das?!
So, jetzt poste ich noch kurz meinen Code, schlafe unzufrieden ein und hoffe, dass morgen sich neue Erkenntnisse und Erfahrungen in meine Wissens- und Denklücken niederlassen werden durch eure Hilfe.
Schlaft gut und ein Danke im Vorraus,
Stormy
btw: Gibt es hier keine Spoiler zum Code "verstecken"?!
Der Code:
Meine Klasse MultiPing (die main halt):
[JAVA=42]package main;
public class MultiPing
{
public static final String BASICIP = "192.168.178.";
public static void main(String[] args)
{
for (int i = 1; i < 32; i++)
{
new Ping(BASICIP+i);
}
}
}[/code]
Meine Klasse Ping:
[JAVA=42]package main;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class Ping extends Thread
{
private String strIP;
public Ping ()
{
this("127.0.0.1");
}
public Ping (String strIP)
{
this.strIP = strIP;
this.run();
}
public void run()
{
try
{
System.out.println(this.strIP+": "+InetAddress.getByName(this.strIP).isReachable(3000));
} catch (UnknownHostException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
}
}[/code]
mich beschäftigt ein Problem gerade: Multithreading.
Ich dachte ich hab mir schon das einfachste Versuchsbeispiel herausgepickt, aber ich irrte mich. Mein Beispiel sah so aus, dass ich einfach alle IP-Adressen in meinem home-Netz pinge um herauszufinden, welche meiner Rechner alle on sind. Kurz: Systemüberwachung meines Heimnetzes auf Verfügbarkeit.
Meine main-Klasse MultiPing erzeugt 31 Ping-Instanzen. Die Klasse Ping selber ruft im Konstruktor die eigene Run()-Methode auf. Normalerweise ist das ja schon in einem neuem Thread laufend oder lieg ich falsch mit dieser Behauptung? Der Punkt ist, dass nicht bei allen 31 IP-Adressen es gleichzeitig abgefragt wird, sondern eine nach der anderen. Das ist ärgerlich, denn 31x 3 Sekunden sind viel länger als 1x 3 Sekunden und dafür gleichzeitig 31 Pings. ==> Wie schaffe ich das?!
So, jetzt poste ich noch kurz meinen Code, schlafe unzufrieden ein und hoffe, dass morgen sich neue Erkenntnisse und Erfahrungen in meine Wissens- und Denklücken niederlassen werden durch eure Hilfe.
Schlaft gut und ein Danke im Vorraus,
Stormy
btw: Gibt es hier keine Spoiler zum Code "verstecken"?!
Der Code:
Meine Klasse MultiPing (die main halt):
[JAVA=42]package main;
public class MultiPing
{
public static final String BASICIP = "192.168.178.";
public static void main(String[] args)
{
for (int i = 1; i < 32; i++)
{
new Ping(BASICIP+i);
}
}
}[/code]
Meine Klasse Ping:
[JAVA=42]package main;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class Ping extends Thread
{
private String strIP;
public Ping ()
{
this("127.0.0.1");
}
public Ping (String strIP)
{
this.strIP = strIP;
this.run();
}
public void run()
{
try
{
System.out.println(this.strIP+": "+InetAddress.getByName(this.strIP).isReachable(3000));
} catch (UnknownHostException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
}
}[/code]