AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Client / Server ....... Denkfehler?.... komme nicht weiter
Thema durchsuchen
Ansicht
Themen-Optionen

Client / Server ....... Denkfehler?.... komme nicht weiter

Ein Thema von Jackie1983 · begonnen am 18. Jul 2008 · letzter Beitrag vom 21. Jul 2008
Antwort Antwort
Seite 1 von 2  1 2      
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#1

Client / Server ....... Denkfehler?.... komme nicht weiter

  Alt 18. Jul 2008, 13:33
hi,

komme irgendwie nicht weiter, vielleicht ein Denkfehler oder ich denke einfach zu kompliziert.

Habe mir dank eines Tutorials ein Protokoll geschrieben welches über die TClientSocket und TServerSocket versendet wird. Das Protokoll steht und ist soweit fehlerfrei, hoffe ich.

Bei meiner Client / Server Anwendung werden immer wieder Daten vom Client zum Server gesendet. Jetzt möchte ich ja auch sicher gehen das die Daten ankommen. Also habe ich mir eine kleine pingpong Komponente geschrieben. Funktioniert auch wunderbar, vor rausgesetzt der Server ist immer Online.

Nur was ist wenn es keine Verbindung zum Server gibt, sei es weil das Kabel mal kurz gezogen wurde oder das DSL abgeschmiert ist. Klar ich muss die Verbindung trennen und neu aufbauen, nur DAS funktioniert leider so nicht. Noch zur Info. Habe eine Client/Server Klasse und eine PingPong Klasse.

Der Ablauf ist recht simpel:

Server geht Online
Pong im Server geht Online

Client geht Online
Ping im Client geht Online

Client will senden
sendet Ping
wenn vom Server ein Pong kommt Daten senden.

Fertig.

Wenn kein Pong kommt könnte ich die Verbindung neu aufbauen...... aber irgend wie........
naja vielleicht kann mir ja hier noch jemand einen denk anstoß geben.....
thx
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Client / Server ....... Denkfehler?.... komme nicht weit

  Alt 18. Jul 2008, 13:49
Wenn das Pong nicht kommt, kann der Client keine Daten senden.
Also muss er solange Ping senden, bis das Pong kommt.

Dies kann er unterschiedlich handhaben:
- unendlich lange, mit gleichem Zeitabstand zwischen den Pongs
- unendlich lange mit wachsenden Zeitintervall
- bis zu einer definierten Zeit, mit gleichem Zeitabstand zwischen den Pongs
- bis zu einer definierten Zeit, mit wachsenden Zeitintervall
- es wird einmal versucht, bei Fehler (kein Pong) wird ne Meldung angezeigt und erst auf User-Input wieder versucht

Nun musst Du Dich entscheiden, fünf Felder sind frei.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#3

Re: Client / Server ....... Denkfehler?.... komme nicht weit

  Alt 18. Jul 2008, 13:55
wenn aber eine Verbindung zwischen client und server besteht und das kabel wird z.b. kurz gezogen muss ich doch erst wieder offline und dann wieder online mit dem client gehen. Oder?

Also
Server Online
Client Online
Verbindung ok

Daten werden gesendet ok

kabel wird gezogen
Client will senden kein pong, keine verbindung.

kabel wieder ok

Client will daten senden.
da ja kein pong mit Client offline gehen
Client versucht wieder online zu gehen
Daten senden

oder sehe ich da was falsch.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.927 Beiträge
 
Delphi 12 Athens
 
#4

Re: Client / Server ....... Denkfehler?.... komme nicht weit

  Alt 18. Jul 2008, 14:01
ändert sich denn die ip Adresse beim Kabelziehen?
TCP/IP Ist unterhalb der Sitzungsebene soweit ich weiß und sollte somit damit klarkommen.
Was ist mit deinem Protokoll kommt es damit klar? Wenn es keine Sitzung aufbaut sollte das kein Problem sein.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Client / Server ....... Denkfehler?.... komme nicht weit

  Alt 18. Jul 2008, 14:03
Im Prinzip hält man eine Verbindung nur so lange offen, wie man sie braucht, um Daten zu übertragen.

Also:
- Verbindung aufbauen
- wenn Verbindung klappt, dann Daten senden
- Daten werden immer mit ACK oder NAK vom Server bestätigt
- Wenn kein ACK kommt, Daten erneut senden
- wenn x-mal kein ACK gekommen ist, dann Fehlerprotokoll und abbrechen
- wenn alle Daten gesendet wurden, dann Verbindung abbauen
- evtl prüft der Server die Daten, bevor er ein ACK sendet
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.927 Beiträge
 
Delphi 12 Athens
 
#6

Re: Client / Server ....... Denkfehler?.... komme nicht weit

  Alt 18. Jul 2008, 14:05
Und genau deswegen ist ja auch der PING unnötig. Das würde höchstens bei UDP/IP Sinn machen.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#7

Re: Client / Server ....... Denkfehler?.... komme nicht weit

  Alt 18. Jul 2008, 14:27
ok, aber ich möchte gerne vom Server aus wissen welche Clients Online sind.
Oder wenn ich vom Server Daten an den Client senden möchte, dann geht das nicht bzw. wenn die clients sich Daten untereinander senden möchten.

ich könnte alle x Sekunden mit dem Client nachschauen am Server nachschauen ob es Daten gibt, aber eine super tolle Lösung ist das auch nicht.....
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#8

Re: Client / Server ....... Denkfehler?.... komme nicht weit

  Alt 18. Jul 2008, 14:32
bei einem Chat wird die Verbindung doch auch aufrecht gehalten und nicht getrennt.....
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#9

Re: Client / Server ....... Denkfehler?.... komme nicht weit

  Alt 21. Jul 2008, 09:45
kann mir da keiner auf die Sprünge helfen.....
Möchte keinen fertigen Code sondern vielleicht hinweise, Tipps, pseudocode.....

Nur das die grauen zellen bei mir anfangen zu arbeiten
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

Re: Client / Server ....... Denkfehler?.... komme nicht weit

  Alt 21. Jul 2008, 15:08
Hallo Jackie1983,

vielleicht waren die Antworten nicht so ganz klar, aber es kommt auf das Protokoll an mit dem die Daten versendet werden. Wenn Du (bzw. Dein Programm) ein "verbindungsloses" benutzt, dann werden die Daten abgeschickt und gut ist. Online würde bedeuten, das, auch wenn nichts los ist, sich Server und Client permanent unterhalten. Also jede Menge unnötiger Traffic erzeugt wird.
Was spricht dagegen ein ganz normales Timeout zu nutzen, und wenn es erreicht ist, dann ist der Server eben down?
Und warum interessiert es ob ein Client "online" ist? Für gewöhnliche Büroanwendungen ist das ziemlich egal. Anders sieht es mit z.B. Produktionssteuerung aus, aber die laufen auch meist nicht mit normalem Ethernet.

Gruß
K-H
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 19:41 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