AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Socket Ausgangsthread, sinvoll? (Ping / Pong)
Thema durchsuchen
Ansicht
Themen-Optionen

Socket Ausgangsthread, sinvoll? (Ping / Pong)

Ein Thema von Jackie1983 · begonnen am 5. Apr 2008 · letzter Beitrag vom 6. Apr 2008
Antwort Antwort
Jackie1983

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

Socket Ausgangsthread, sinvoll? (Ping / Pong)

  Alt 5. Apr 2008, 13:57
hi,

bei meinem Protokoll für die Kommunikation über Sockets habe ich es so gelöst das wenn Daten vom Client zum Server gesendet werden wird erst ein Ping zum Server gesendet. Der Server antwortet mit einem Pong. Wenn der Client den Pong bekommt sendet er die Daten.
Nur leider funktioniert die umsetzung nicht wirklich.....

Daten senden (TMyClient)
Delphi-Quellcode:
  //Sende ping und warte 5 sek auf antwort
  ping := TCommandHandling.Create(cmdPing);
  s := ping.SendFrames;
  fClient.Socket.SendBuf(PChar(s)^,length(s));
  StartTime := now + 2.2*(2.2/86400.0);
  //Ping gesendet warte auf Pong
  while (not fIsPongOk) and (StartTime > now) do
  begin
    sleep(1);
    application.ProcessMessages;
  end;
  ping.Free;
Pong
Delphi-Quellcode:
procedure TMyClient.OnGetDataSocket(Socket: TCustomWinSocket;
  Cmd: TCommandHandling);
begin
  if cmd.GetCmd = cmdPong then
    fIsPongOk := true
  else
    fOnGetData(cmd);
end;
Dachte mir eventuell einen Thread zu erstellen Inbound/Outbound, oder nur eine Klasse mit einem Thread der die aufgabe Eingang/Ausgang löst. Was meint ihr?

Habe vor den Ablauf wie volgt zu lösen.....
Delphi-Quellcode:
Client Server
  Sende Ping -> ist es ein ping
                  <- sende pong
  Warte auf Pong
  sende daten ->
Müsste es mit einem Thread lösbar sein oder mit 2 (Eingang - Ausgang)?
  Mit Zitat antworten Zitat
Jackie1983

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

Re: Socket Ausgangsthread, sinvoll?

  Alt 5. Apr 2008, 14:02
habe gerade die warte zeit geändert
Delphi-Quellcode:
  StartTime := now + 3.2*(3.2/86400.0);
  //Ping gesendet warte auf Pong
  while (not fIsPongOk) and (StartTime > now) do
dann funktioniert es, aber ist das so auch die beste lösung?
//Edit doch nicht scheint noch zu hängen .....
  Mit Zitat antworten Zitat
Jackie1983

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

Re: Socket Ausgangsthread, sinvoll? (Ping / Pong)

  Alt 6. Apr 2008, 12:26
habe es jetzt für den Client gelöst, nur für den Server muss ich mir noch was einfallen lassen.
Da ja beim Server mehrer Clients auflaufen und ich diese irgend wie auseinander halten muss......

Baue einfach noch eine Verbindung auf. Über diese schicke ich den Ping/Pong. Wenn ich ein Pong bekomme können daten gesendet werden, wenn kein Pong nach x sek kommt, werden die Daten in einem Buffer geschrieben und beim nächsten pong gesendet.....
  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 09:04 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