AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Indy TCP-Server, unterbrochene Verbindung erkennen
Thema durchsuchen
Ansicht
Themen-Optionen

Indy TCP-Server, unterbrochene Verbindung erkennen

Ein Thema von Centrii · begonnen am 19. Mai 2008 · letzter Beitrag vom 20. Mai 2008
Antwort Antwort
Centrii

Registriert seit: 18. Mai 2007
Ort: FDS
108 Beiträge
 
Delphi 2006 Architect
 
#1

Indy TCP-Server, unterbrochene Verbindung erkennen

  Alt 19. Mai 2008, 08:58
Hi @ all,

Ich hab mir einen kleinen TCP-Server gebastelt. Nun hab ich das Problem das ich nicht erkenne wenn ich zum TCP-Client
die Verbindung verliere, z.B. durch ausgestecktes Netzwerkkabel. Gibts da nen Ansatz wie ich das lösen könnte ?

Danke für eure Anregungen

Gruß Ruben
Ruben
Theorie ist, wenn man alles weiss, aber nichts funktioniert. Praxis ist, wenn alles funktioniert und keiner weiss warum
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Indy TCP-Server, unterbrochene Verbindung erkennen

  Alt 19. Mai 2008, 09:03
Ich kenne keinen Ansatz. Wenn das Kabel physisch getrennt wird irgendwo auf dem langen Weg übers Internet kann man es nur erahnen wenn der Datenverkehr still steht. Wenn du aber keine Daten überträgst ist es eigentlich unmöglich zu erkennen ob irgendwo mittendrin mal kurz die Leitung getrennt war.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Indy TCP-Server, unterbrochene Verbindung erkennen

  Alt 19. Mai 2008, 09:04
Wenn grad nix zu tun ist, schick halt immer wieder mal ein Byte an die Clients.

Wenn keine Rückmeldung kommt, dann ist was putt.

Sherlock
Oliver
  Mit Zitat antworten Zitat
Centrii

Registriert seit: 18. Mai 2007
Ort: FDS
108 Beiträge
 
Delphi 2006 Architect
 
#4

Re: Indy TCP-Server, unterbrochene Verbindung erkennen

  Alt 19. Mai 2008, 09:32
gibt es da nicht sowas wie ein KeepAlive? Ich weiß vom Client aus kann man da was machen, aber vom Server aus find ich nichts.
Blöde Frage, was für ein Event wird ausgelöst wenn ich als Server was zum Client sende und von dem eine Bestätigung zurückkommt ??
Ruben
Theorie ist, wenn man alles weiss, aber nichts funktioniert. Praxis ist, wenn alles funktioniert und keiner weiss warum
  Mit Zitat antworten Zitat
Benutzerbild von hincapie
hincapie

Registriert seit: 24. Mär 2005
200 Beiträge
 
Delphi 5 Professional
 
#5

Re: Indy TCP-Server, unterbrochene Verbindung erkennen

  Alt 20. Mai 2008, 05:55
Zitat von Centrii:
Blöde Frage, was für ein Event wird ausgelöst wenn ich als Server was zum Client sende und von dem eine Bestätigung zurückkommt ??
Gibt es nicht (zumindest nicht bei Indy 9), Du mußt mit einem Timer nachprüfen, ob etwas kommt...
Such mal nach IdTCPClient, da gibt es Beispiele hier...
  Mit Zitat antworten Zitat
Centrii

Registriert seit: 18. Mai 2007
Ort: FDS
108 Beiträge
 
Delphi 2006 Architect
 
#6

Re: Indy TCP-Server, unterbrochene Verbindung erkennen

  Alt 20. Mai 2008, 06:08
Moin

das dachte ich mir nämlich, jetzt hab ich nur das Problem das der TCPClient unter umständen nie sendet,
ich versorge mehrere Clients mit Daten, bekomme selber aber nichts. Sollte ich was bekommen, werte ich es im
OnExecute vom TCP-Server aus. Das funktioniert auch alles wunderbar. Nun erkenne ich es nicht wenn ein Client
nicht ordnungsgemäß beendet wird oder eine Netzwerkkabel ausgesteckt wird.
Mein Client bekommt es mit über ein KeepAlive.
Mit der Option "SIO_KEEPALIVE_VALS" in der System-Funktion "WSAIoctl" aus der "WS2_32.dll" kann diese Option aktiviert werden,
und gleichzeitig die Zeiten für den Timeout und den Interval festlegt werden. Dann werden vom TCP/IP-Stack automatisch "KeepAlive"-Pakete generiert,
wenn länger als die bei Timeout angegebene Zeit kein Datenaustausch stattfindet. Erfolgt auf diese "KeepAlive"-Pakete kein Acknowledge,
wird vom TCP/IP-Stack erkannt, daß die Verbindung unterbrochen ist. Das alles macht der TCP/IP-Stack alleine,
ohne das dafür etwas programmiert werden muß (außer dem Setzen der Option natürlich).
In meinem Client für den TCP-Server erkenne ich dadurch eine unterbrochene Verbindung nach spätestens einer Minute.
Nur leider schaff ich das nicht für den TCP-Server.
Sollte sich jemand damit auskennen, und mir ein paar Tipps geben, würde ich mich riesig freuen.

Gruß Ruben
Ruben
Theorie ist, wenn man alles weiss, aber nichts funktioniert. Praxis ist, wenn alles funktioniert und keiner weiss warum
  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 04:34 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