Hi, weiss jemand wie man durch „sockets“ in java Verbindung bzw. pingen mit 3 Servern herstellt ? Also sowas wie ne abfrage soll das sein.
Danke im voraus auf eure antworten.
Moien
Da du in javascript und in java nach dem gleichen fragst: dir ist schon klar dass das 2 komplett unterschiedliche Programmiersprachen sind die nix miteinander zu tun haben ?
Bei Java und Sockets ist das gemeint: http://java.sun.com/j2se/1.4.2/docs/api/java/net/Soc…
cu
hi
ein grundsatzproblem ist, dass java von haus aus nur die protokolle tcp/ip und udp/ip unterstützt, das klassische ping aber über icmp erfolgt. tcp und udp setzen voraus, dass der zielserver einen entsprechenden port freihält und auf die anfragen reagiert. das gilt zwar im prinzip auch für das ping, nur dass das antworten auf eine ping-nachricht zum standard gehört und daher praktisch überall aktiviert ist.
folge: es reicht nicht, einfach nur ein programm für den client zu schreiben, es muss auch auf den drei servern irgendwas aktiv sein, mit dem sich der client verbinden kann.
sollte zwar grundsätzlich kein problem sein, da irgendwelche systemport für uhrzeit oder so fast immer offen sind. nur diese dinge musst du erst klären, bevor du dich ans programmieren machen kannst. ev. musst du auch selber einen entsprechenden serverprozess schreiben.
ansonsten geht socket-programmierung unter java ja recht einfach:
Socket socket = new Socket (ipadresse,port);
socket.close();
in „ipadresse“ steht die ip-adresse eines servers, in port eine freie portnummer. denn beim erzeugen des sockets keine exception auftritt, ist der serverport verfügbar, ansonsten eben nicht.
das ganze in einer schleife über alle drei server hintereinander und über etwas thread-steuerung alle paar minuten aufgerufen und du hast das fertige überwachungsprogramm.
ich hoffe nur, das ganze ist eine übungsaufgabe in der schule oder in einem java-kurs. den überwachungstools für server gibt es wie sand am mehr. und die wenigsten sind dabei in java geschrieben, da man bei solchen tools überlicherweise ziemlich tief runtergehen muss und java auf ip-ebene etwas zu hoch angesiedelt ist.
erwin
ps: und nein, dieses forum ist nicht geeignet dafür, dass man sich hausaufgaben etc. machen lassen kann. steht auch explizit so in den nutzungsbestimmungen. ein bisschen nachdenken bzw. nachlesen ist jedem selber überlassen…
Habe hier ein konkretes Codebeispiel erstellt…wie pumpkin bereits gesagt hat…das ist nur für Übungszwecke ausreichend!
import java.net.*;
import java.io.*;
class PingApp
{
public static void main(String[] args)
{
while (true)
{
if (checkIsActive(„www.google.de“, 80))
System.out.println(„Google erreichbar…“);
else
System.out.println(„Google down…sende Mail“);
if (checkIsActive(„www.yahoo.de“, 80))
System.out.println(„Yahoo erreichbar…“);
else
System.out.println(„Yahoo down…sende Mail“);
if (checkIsActive(„www.ebay.de“, 80))
System.out.println(„Ebay erreichbar…“);
else
System.out.println(„Ebay down…sende Mail“);
try
{
Thread.sleep(100000);
}
catch (Exception e)
{
}
}
}
static boolean checkIsActive(String host, int port)
{
try
{
SocketAddress addr = new InetSocketAddress(host, port);
Socket socket = new Socket();
socket.connect(addr, 300);
socket.close();
return true;
}
catch(Exception e)
{
return false;
}
}
}
Hi sorry erstmal das ich so spät antworte, war im seminar. Vielen dank für eure Antworten. Also nochmal das programm möchte ich natürlich in java schreiben. Habe noch ein paar fragen an Fbrjogl.
Ich habe dein Code in eclipse eingefügt. Er hat „import java.io.*;“ nicht erkannt, woran ligt das ?
Habe versucht dein Code einigermaßen zu verstehen aber habe nicht alles vestanden , könnten wir dein code zeile für zeile bearbeiten, ich schreibe dir mal was ich so verstanden habe.
if (checkIsActive(„www.google.de“, 80))
System.out.println(„Google erreichbar…“);
else
System.out.println("Google down…sende
hier checkst du ob google aktiv ist, 80 sollte der port sein oder ?
der rest ist ja auch dasselbe mit den anderen beispielen.
so dann kommt:
try
{
Thread.sleep(100000);
}
catch (Exception e)
was macht er hier ?
static boolean checkIsActive(String host, int port)
{
try
{
SocketAddress addr = new InetSocketAddress(host,
port);
Socket socket = new Socket();
socket.connect(addr, 300);
socket.close();
return true;
}
catch(Exception e)
{
return false;
}
}
}
und das hier verstehe ich auch leider nicht
Fragen was dies bedeutet:
while (true)
könntest du mir bitte weiterhelfen ?
Hallo.
Ich habe dein Code in eclipse eingefügt. Er hat „import
java.io.*;“ nicht erkannt, woran ligt das ?
Code bitte mit pre-Tags einfügen:
import java.io.\*
sieht besser aus.
In Eclipse dann so
import java.io.\*
if (checkIsActive(„www.google.de“, 80))
System.out.println(„Google erreichbar…“);
else
System.out.println("Google down…sendehier checkst du ob google aktiv ist, 80 sollte der port sein
oder ?
Ja.
der rest ist ja auch dasselbe mit den anderen beispielen.
so dann kommt:
try{
Thread.sleep(100000);
}
catch (Exception e)was macht er hier ?
Versuche
{
Thread.schlafen(100000);
}
fange (Ausnahme e)
}
Fragen was dies bedeutet:
while (true)
Solange ein Wert wahr (true) ist, soll eine bestimmte Aktion durchgeführt werden.
mfg M.L.