Testen ob server online ist

  • Themenstarter Themenstarter tester
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
T

tester

Gast
Hi,
Ich habe folgendes Problem. Ich habe ein client server tool geschrieben. Wie kann ich jetzt vom client aus testen ob der server online ist?
Wenn er nicht online ist hängt das Programm immer am socket.
An dieser stelle.
Code:
Socket s=new Socket(ip,port);
Wie kann ich im vorraus klären ob der server online und erreichbar ist?
Das Problem ist ja das ich an dieser stelle noch kein timeout senden kann.
Hat einer eine idee?
 
falls er nicht ereichbar ist wird eine Exception ausgelös
ich hab jetzt keine ahnung wie die heist weil ich fast immer alles als einfache Exception behandle
aber was eine Exception ist weist du oder?

hab mal nachgeschaut : ich glaub ConnectException aber du musst generell alle IOExceptions abfangen
Code:
try{

Socket s=new Socket("342",34);
}
catch(ConnectException uhe){
// hier landest du falls der Server noch nicht online ist in der regel
}
catch(IOException ioe){

}

aber die Exception wird manchmal auch dann aufgerufen falls man aus einem anderen grund den server nicht erreicht
aber eigentlich sollte das reichen
 
wie millinär schon sagt, die Exception benutzten, du kannst auch einfach nur Exception abfangen und einfach keine genaue bestimmen, dann wird zwar jede gefangen und du weist nicht welche es war, aber es stürzt halt nichts ab..

Excpetions sollte man immer einsetzen wenn möglich(nötig) also da wo critische vorgänge ablaufen, das ist einfach ein Grundgedanke den man so benutzen sollte, wie gewürze am essen..

mfG derDachs
 
oh jetzt vergesse ich glatt mein eigendlichen Post...
du kannst den server auf jedenfall anpingen...

einfach mit runexec den pingbefehl des Betriebssystems nutzen..
die rückgaben des Programms mit getInputSteam des RunExec objects auslesen und fertig..

mfG der Dachs
 
derDachs hat gesagt.:
du kannst den server auf jedenfall anpingen...

einfach mit runexec den pingbefehl des Betriebssystems nutzen..
die rückgaben des Programms mit getInputSteam des RunExec objects auslesen und fertig..
Das muss aber nicht immer klappen - es besteht durchaus die Möglichkeit, in einem Netzwerk das "Anpingen" zu unterbinden, die eigentliche Socket-Verbindung aber zuzulassen.
 
Da hat Murray Recht. Ping ist ein Netzwerkservice, der wie jeder andere ein- und ausgeschaltet werden kann. Geht doch mal zum Spaß auf www.microsoft.de . Ihr bekommt eine Website, also ist alles okay. Nun macht ne Kommandozeile auf und pingt den Server mal an 😉
 
Also so funzt es z.B.:

Code:
import java.io.*;
import java.net.*;

public class ServerTest {

 Socket s;
 String[] server = { "microsoft.com", "google.de", "g000000gl3.de", "opel.de", "sadg74g974g9723bg.de" };
 
  public void test() {
   for ( String serv : server ) {
    try {
     s = new Socket(serv,80);
     System.out.println("Der Server " + serv + " ist online !");
    } catch ( UnknownHostException uhe ) {
       System.out.println("Der Server " + serv + " ist down !");
      } catch ( IOException ioe ) { }
   }
  }

  public static void main(String[] args) {
   ServerTest st = new ServerTest();
   st.test();
  }
}
 
:shock: Das gibt's ja auch unter Windows?

Ich dachte bisher, das wäre ausschließlich ein unix-Kommando.

Zumindest kannte ich es unter keiner DOS-Version.
 
Leroy42 hat gesagt.:
:shock: Das gibt's ja auch unter Windows?

Ich dachte bisher, das wäre ausschließlich ein unix-Kommando.

Zumindest kannte ich es unter keiner DOS-Version.

Gabs unter DOS denn serienmäßig nen TCP/IP-Stack? Kann mich nicht entsinnen...
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben