AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi verbindung zum server? Client/server Sockets
Thema durchsuchen
Ansicht
Themen-Optionen

verbindung zum server? Client/server Sockets

Ein Thema von Jackie1983 · begonnen am 14. Jul 2008 · letzter Beitrag vom 14. Jul 2008
Antwort Antwort
Jackie1983

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

verbindung zum server? Client/server Sockets

  Alt 14. Jul 2008, 14:39
hi,

habe eine Client/Server anwendung. Der Client sendet Daten an den Server.
Wenn aber keine Internetverbindung besteht oder der server nicht erreichbar ist soll der client beim nächsten mal wenn er online ist die Daten senden.

Habe jetzt nur nicht wirklich eine idee wie ich es umsetzten kann das der client prüft ob er mit dem server verbunden ist.

Habe es bis jetzt so gelöst
Client will Daten senden
Client sendet Ping
Server antwortet Pong
Wenn Pong da, sendet Client die Daten

was ist aber wenn kein pong kommt Verbindung trennen und wenn ich wieder Daten senden möchte versuchen wieder eine Verbindung aufzubauen?

Was meint ihr?
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: verbindung zum server? Client/server Sockets

  Alt 14. Jul 2008, 14:42
Du könntest die zu schickenden Daten einfach in eine Liste packen.

Wenn der Server mit Pong antwortet, gehst Du die Liste durch und sendest die Daten. Antwortet der Server nicht, fügst Du neue Daten einfach in die Liste ein und sendest erst, wenn Du wieder ein Pong vom Server bekommst.
  Mit Zitat antworten Zitat
Jackie1983

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

Re: verbindung zum server? Client/server Sockets

  Alt 14. Jul 2008, 14:44
so habe ich es auch gemacht, nur wenn die Verbindung mal zum Server getrennt wurde muss ich sie ja wieder aufbauen.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#4

Re: verbindung zum server? Client/server Sockets

  Alt 14. Jul 2008, 14:46
Und wo ist da das Problem?

Du hast ja sicherlich eine Methode, die zum Server verbindet. Wenn Du nun keine Verbindung hast, versuchst Du wieder eine aufzubauen.
  Mit Zitat antworten Zitat
Jackie1983

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

Re: verbindung zum server? Client/server Sockets

  Alt 14. Jul 2008, 16:13
so weit funktioniert das es ja auch aber irgend wie auch wieder nicht
Delphi-Quellcode:
procedure TMyClient.Send(var Cmd: TCommandHandling; SendNow : Boolean; FreeCmd : Boolean);
var
  s : string;
  StartTime : double;
  cs : TCriticalSection;
begin
  if not fIsOnline then GoOnline('127.0.0.1',12345);
  application.ProcessMessages;
  cs := TCriticalSection.Create;
  cs.Enter;
  //Daten im Buffer ablegen
  fQoS.QoS_Buffer := fQoS.QoS_Buffer + cmd.SendFrames;
  //Jetzt senden oder Sammeln
  if not SendNow then
    if length(fQoS.QoS_Buffer) < fQoS.QoS_SendSize then exit;

  if not fIsOnline then exit;//wird bei OnConnect auf true gesetzt
  fPingPong.SendePing;
  StartTime := now + 2.2*(2.2/86400.0);
  //Ping gesendet warte auf Pong
  while (not fPingPong.fPong) and (StartTime > now) do
  begin
    sleep(1);
    application.ProcessMessages;
  end;
  //Ist Pong ok und zeit nicht abgelaufen, also verbunden, sende daten
  if fPingPong.fPong then
  begin
    fPingPong.fPong := false;
    //Daten senden
    s := fQoS.QoS_Buffer;
    fQoS.QoS_Buffer := '';
    fClient.Socket.SendBuf(PChar(s)^,length(s));
  end else // wenn kein pong server nicht da -> off
    if fIsOnline then
      GoOffline;
  application.ProcessMessages;
  //Freigeben
  if FreeCmd then cmd.Free;
  cs.Leave;
end;
so klappt es auch aber nicht immer wenn ich debugge und las mir "zeit" beim debuggen funktioniert es immer.....

Vielleicht findet ja jemand einen Fehler oder weis wie man es besser / eleganter lösen kann....
  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 19:47 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