AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Überprüfen ob Server noch da ist
Thema durchsuchen
Ansicht
Themen-Optionen

Überprüfen ob Server noch da ist

Offene Frage von "Overburn"
Ein Thema von Overburn · begonnen am 30. Aug 2005 · letzter Beitrag vom 5. Sep 2005
Antwort Antwort
Overburn

Registriert seit: 12. Okt 2004
Ort: Bochum
47 Beiträge
 
#1

Überprüfen ob Server noch da ist

  Alt 30. Aug 2005, 13:53
Hallo!
Ich bin gerade total am verzweifeln bei folgendem Problem.
Ich habe einen Server. Es besteht die Vermutung, das die Verbindung zum Server immer nur ganz kurz (max. 1 Sec, wahrscheinlich aber mit Millisekundenbereich) unterbochen ist. Um das zu überprüfen möchte ich in Delphi ein Programm schreiben, welches anzeigt, wenn der Server nicht mehr da ist. Ansätze mit den Indy-Komponenten oder mit Portscans haben nichts gebracht, da es die Komponenten entweder nicht mitbekommen, oder die Auslastung zu hoch war. Achso dieser Thread hat auch nichts gebracht. Habt ihr vielleicht weitere Vorschläge? Begebe mich jetzt mal weiter in die tiefen des Webs, vielleicht find ich ja was.

Gruß,
Overburn
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Überprüfen ob Server noch da ist

  Alt 30. Aug 2005, 14:30
Du könntest den TCP Port "Echo" (=7) öffnen.
Du sendest deine aktuelle Uhrzeit und empfängst sofort das Echo.
Delphi-Quellcode:
var jetzt : TDateTime;
begin
  jetzt := SysUtils.Now;
  // Uhrzeit binär senden, Umwandlung in einen String nicht notwendig
  sendestream.WriteBuffer(jetzt, sizeof(jetzt)); // 8 Bytes
Wenn du das Echo empfangen hast, dann wird die Differenzzeit ausgerechnet und angezeigt.
Sollte die Differenzzeit über einem best. Limit liegen, dann hast du ein Verbindungsproblem.

Das gleiche Spielchen lässt sich auch über UDP durchführen.
Im Internet werden wahrscheinlich einige UDP Pakete verloren gehen.
Andreas
  Mit Zitat antworten Zitat
Overburn

Registriert seit: 12. Okt 2004
Ort: Bochum
47 Beiträge
 
#3

Re: Überprüfen ob Server noch da ist

  Alt 31. Aug 2005, 11:47
Moin!

Hier nochmal die genaue Aufgabenstellung:
Ich soll zwei Anwendungen bauen. Einen Client und einen Server. Der Client soll eine Verbindung mit dem Server aufbauen. Da diese permanent sein soll, muss ich TCP/IP einsetzen. Jetzt kann es sein, das irgendwo in dem Netzwerk wo der Server steht ein physikalischer Fehler im Netzwerk auftritt, der da aber nur für ein paar Millisekunden besteht. In diesem Netzwerk hängen mehere Regler, die alle mit UDP zu einem Rechner verbunden sind. Jeder kleinste Verbindungsabbruch macht sich da schon bemerkbar, da sie permanent mit dem Rechner in Kontakt stehen sollen. Meine Aufgabe ist es jett, wie schon erwähnt, über ein CLient/Server-Tool herauszufinden, wann und wie lange diese Störung besteht. Habe an Komponenten INDY, InternetPro und noch andere auf WinSocks aufbauende eingesezt. Aber alle bekommen es nicht mit, wenn z.B. am Server das Netzwerkkabel gezogen wird. Genau diesen Moment möchte ich aber gerne abpassen. Ist das überhaupt möglich?

Gruß,
Overburn
  Mit Zitat antworten Zitat
Basilikum

Registriert seit: 9. Aug 2003
389 Beiträge
 
Delphi 7 Professional
 
#4

Re: Überprüfen ob Server noch da ist

  Alt 31. Aug 2005, 12:23
wenn es "nur" darum geht, zu prüfen, ob die Netzwerkstrecke zwischen Client und Server noch steht, würde ich anstelle von TCP (das einem relativ weit vom Netzwerk abkapselt) ICMP verwenden (Ping)... für reines Pingen brauchst du auch keine Server-Software, da dieser Teil bereits der IP-Stack (im OS) übernimmt...
jede Sekunde ein Ping-Request absetzen; wenn nicht innert nützlicher Frist (bei Ethernet innert Millisekunden) ein Ping-Response eintrifft, ist die Strecke down.

PS: mit TCP wirst du kurze Unterbrüche nicht mitbekommen, da das Protokol per Definition ein nicht bestätigtes Paket mehrmals wiederholt, bis dann irgendwann (z.T. bis Minuten) aufgegeben wird.
  Mit Zitat antworten Zitat
Overburn

Registriert seit: 12. Okt 2004
Ort: Bochum
47 Beiträge
 
#5

Re: Überprüfen ob Server noch da ist

  Alt 5. Sep 2005, 11:11
Hallo!
Mir ist da ne weitere Idee gekommen:
Und zwar, sollte ein Datenpaket nicht ankommen, muss ja TCP veranlassen, das dieses neu gesandt wird. Diesen Moment könnte man ja abpassen und als Indiz dafür nehmen, das der Zielrechner nicht mehr mit dem Netzwerk verbunden ist.
Was haltet ihr davon?
Gruß,
Overburn
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Überprüfen ob Server noch da ist

  Alt 5. Sep 2005, 11:20
joa gute idee. du kannst den tcp stack auslesen, wo dir die errors usw angezeigt werden
mit iphlpapi kannst du das machen (einfach mal in der DP suchen)

so würde ich einfach ne TCP verbindung aufbauen und dauerhaft in einer schleife daten senden, die auf der gegenstelle einfach ins nichts führen. bei einem fehlerhaft übertragenen paket (oder neu angeforderten) sollte das dann den fehlercounter o.ä. hochzählen.

denke mal das müsste tun
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Überprüfen ob Server noch da ist

  Alt 5. Sep 2005, 12:04
Man siehe dazu folgende MSDN seite:

http://msdn.microsoft.com/library/de...b_tcpstats.asp

Die die IPHLP-API Statistik Werte erklärt.

und dort beachte man folgendes:

dwRetransSegs
Specifies the number of segments retransmitted.

-> genau das richtige.

Für Delphi hab ich nun die IPHLP-API .pas angehängt, incl demo programme womit man das dann auslesen könnte.
Angehängte Dateien
Dateityp: zip iphlpapi_210.zip (61,8 KB, 21x aufgerufen)
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Overburn

Registriert seit: 12. Okt 2004
Ort: Bochum
47 Beiträge
 
#8

Re: Überprüfen ob Server noch da ist

  Alt 5. Sep 2005, 13:04
Hallo Supermuckl!
Danke für deine Hilfe! :-)

Gruß,
Overburn
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz