Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Wie kann ich: "Ein Realtime System programmieren" (https://www.delphipraxis.net/40162-wie-kann-ich-ein-realtime-system-programmieren.html)

ElectricalFire 11. Feb 2005 17:10


Wie kann ich: "Ein Realtime System programmieren"
 
hallo leute

es geht um folgendes: ich moechte dass mein server programm an den clienten (alle clienten) etwas schicke, sobald es geupdatet worden ist (ein timer des clienten, der immer wieder den server nach neuen daten fragt, ist nicht die loesung).

ihr muesst euch das so vorstellen, dass eine server/clienten verbindung immer besteht, und da werden dann je nach dem immer wieder daten verschickt, ohne, dass die verbindung danach beendet wird.

wie kann ich eine solche "dauer verbindung" programmieren?

Danke viel mals!

ps: wenns geht mit indy 10, ansonsten ist auch indy 9 ok...

Ultimator 11. Feb 2005 17:12

Re: Wie kann ich: "Ein Realtime System programmieren&am
 
Du könntest ja, sobald der Update-Stream vorbei ist, vom Client aus an den Server ein Kommando (einen String oder so) schicken, dass der Update-Vorgang beendet ist, und darauf dann reagieren...

Andis 11. Feb 2005 17:13

Re: Wie kann ich: "Ein Realtime System programmieren&am
 
Kann deine Datenbank auch Triggers? Dann weisst du schon ungefähr wie es geht :-)
Welche Datenbank willst du nutzen?

Ultimator 11. Feb 2005 17:17

Re: Wie kann ich: "Ein Realtime System programmieren&am
 
Bist du sicher, dass er eine Datenbank nutzt?
Ich konnte oben nichts davon lesen ;-)

Andis 11. Feb 2005 17:19

Re: Wie kann ich: "Ein Realtime System programmieren&am
 
Hihi danke o mann ich glaube ich sollte mal ein bischen Pause machen :wall:

ElectricalFire 11. Feb 2005 17:31

Re: Wie kann ich: "Ein Realtime System programmieren&am
 
ultimator,
du meinst also, so im pseudo code:

wenn server bekommt string mit inhalt "fertig"
dann close connection und client soll eine neue aufbauen...?

naja, irgend wie schon das was ich habe, jedoch will ich nicht immer verbindungen aufbauen muessen (zeitaufwaendig, performance frage)

es soll einmalig eine connection aufgebaut werden, wo immer wieder daten gesendet werden.
beispiel bei einer telnet verbindung. man verbindet 1 mal und dann kann man befehle schreiben, die resultate lesen und dann herum idlen. dann wieder was schreiben, etc...

ablauf ware folgendermassen:

1. server kriegt daten
2. server sendet daten clienten, der durch sein einloggen dauerhaft verbunden ist.
3. server wartet auf neue daten, in der zeit rattert der client die daten gegebenermassen um.

mein problem ist ja, dass ich von einem server nicht an einen clienten senden kann, ohne dass schon eine verbindung entsteht, und mit tcpclient kann ich nur verbinden, wenn ich auch die ipadresse weiss (firewall, router, nat im weg).

Ultimator 11. Feb 2005 17:37

Re: Wie kann ich: "Ein Realtime System programmieren&am
 
Aber du hast doch oben geschrieben, dass die beiden (Server+Client) miteinander ständig verbunden sind, oder? :gruebel:

Client sendet Text an Server "Ich will senden"
Server sendet Text an Client "Ha, OK"
Client sendet nen Stream an den Server -> Dauert
Stream ist fertig gesendet -> Server sendet an den Client "fertig" oder so
Daher weiß der Client dann, dass er nix mehr zu tun hat, und auf weitere Befehle warten kann/soll


Oder hab ich wieder mal ne Hirnblockede? :wall: :lol:

ElectricalFire 11. Feb 2005 18:23

Re: Wie kann ich: "Ein Realtime System programmieren&am
 
ja und wie programmier ich das jetzt?

oder wie soll ich dann warten koennen, welche kompos brauch ich da?

ElectricalFire 11. Feb 2005 19:41

Re: Wie kann ich: "Ein Realtime System programmieren&am
 
ok habs selbst rausgefunden:

connect in einem thread:
Delphi-Quellcode:

procedure twinform.connect;
begin
  with TidTCPClient1 do begin
    Connect;
  end;
end;
Read in einem Thread:
Delphi-Quellcode:

procedure TWinForm.transfer
begin
  with TidTCPClient1 do begin
      listbox1.Items.Add(iohandler.readln);
  end;
end;
und server seitig:
Delphi-Quellcode:

procedure TWinForm.tcps1_onExecute(AContext: IdContext.TIdContext);
begin
with AContext.Connection do
  begin
    iohandler.WriteLn('Server/Client Connected Successfully!');
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 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