AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy 10 TCP - Strings unaufgefordert versenden?
Thema durchsuchen
Ansicht
Themen-Optionen

Indy 10 TCP - Strings unaufgefordert versenden?

Ein Thema von Klaxon · begonnen am 31. Aug 2006 · letzter Beitrag vom 16. Sep 2006
 
Klaxon

Registriert seit: 31. Aug 2006
10 Beiträge
 
#1

Indy 10 TCP - Strings unaufgefordert versenden?

  Alt 31. Aug 2006, 10:53
Hallo liebe Delphi-Gemeinde,

viel habe ich hier im Forum schon gelernt aus den älteren Posts, diesmal bin ich aber auf direkte Hilfe angewiesen.

Ich möchte eine Server/Client-Verbindung, bei dem der Server, wenn er das möchte, unaufgefordert einen String versendet. Der Client müsste sich ja dafür zunächst connecten und dann in eine Art "Lausch"-Modus übergehen. Wie realisiere ich das?

Zur Zeit ist es bei mir so, dass ich laut Timer ein Readln ausführe beim Client und der Server ja dann das OnExecute-Ereignis auführt. Das ganze funktioniert auch, nur möchte ich eher, dass der Server entscheidet, wann er was schicken möchte und der Client immer connected ist und auf Strings wartet. Natürlich möchte ich aber auch einen Timeout, falls der Server über eine gewisse Zeit gar nichts mehr sendet. Hier mein bisheriger Code:

Connecten:

Delphi-Quellcode:
procedure TForm1.btnServerConnectClick(Sender: TObject);
begin
if not TCPClient.Connected then
   begin
   
      TCPClient.Connect;
      MemoLog.Lines.Add(FormatDateTime('',now)+' *** Successfully connected to Server');
    
    end;
   end;

TimerCycle.Enabled:=true;
end;

Timer-getriggertes String-holen des Clients:

Delphi-Quellcode:
procedure TForm1.GetData;
 begin
with TCPClient do begin
    try
      S:=IOHandler.ReadLn;
      MemoLog.Lines.Add(FormatDateTime('',now)+' '+S+' received');
    finally
      Disconnect;
    end;
  end;
 end;
Und hier der Server:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
    if not idTcpServer1.Active then
        begin
        idTCPserver1.Active:=true;
        end;
    Strings[0]:='00000000000000000000000000000000';
    Strings[1]:='FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF';

end;

procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
begin
  with AContext.Connection.iohandler do
  begin
    WriteLn(Strings[Random(2)]);
  end;
end;
Übrigens hat meine bisherige Lösung noch ein Problem: Nach ca.15 Min erscheint die Meldung "Gracefully Disconnected", wie kommt es dazu?

Vielen Dank, Gruß,
Klaxon.
  Mit Zitat antworten Zitat
 


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 03:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz