AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TClientsocket soll warten in Thread
Thema durchsuchen
Ansicht
Themen-Optionen

TClientsocket soll warten in Thread

Ein Thema von aikombo · begonnen am 20. Nov 2009 · letzter Beitrag vom 25. Nov 2009
Antwort Antwort
Seite 1 von 2  1 2      
aikombo

Registriert seit: 20. Nov 2009
4 Beiträge
 
#1

TClientsocket soll warten in Thread

  Alt 20. Nov 2009, 13:47
Hallo,

ich habe hier ein TClientsocket in einem Thread und es werden diverse
Daten an einen Server gesendet(über HTTP Protokoll).
Das Programm läuft so ab:
-Verbinden zum Server
-Anfrage senden
-auf Antwort warten
-Falls eine Antwort vom Server gekommen ist, soll der Client 30 Sekunden
warten bis er erneut etwas sendet.


Löse ich das mit sleep(30000); wird die Verbindung unterbrochen.

Gibts es irgendwelche Alternativen? habe leider nichts passendes gefunden.


Vielen Dank
  Mit Zitat antworten Zitat
uoeb7gp
(Gast)

n/a Beiträge
 
#2

Re: TClientsocket soll warten in Thread

  Alt 20. Nov 2009, 14:08
Hallo, wie hast Du die Komponente konfiguriert (Blocking, NonBlocking)??
Was meinst Du mit ClientSocket in einem Thread, da gibt es viele Möglichkeiten.

Kannst Du den Source posten?

lg.
  Mit Zitat antworten Zitat
aikombo

Registriert seit: 20. Nov 2009
4 Beiträge
 
#3

Re: TClientsocket soll warten in Thread

  Alt 20. Nov 2009, 14:26
Ich habe einfach eine Prozedur gemacht, die dann als neue Thread erstellt wird,
wenn du verstehst.

So fange ich dann die Ereignisse ab:
Delphi-Quellcode:
  repeat
    Sleep(50);
    Application.ProcessMessages;
  until (cs.Socket.Connected = true) or (Application.Terminated);
Clienttype ist ctNonBlocking
  Mit Zitat antworten Zitat
stho

Registriert seit: 16. Sep 2009
Ort: 127.0.0.1
288 Beiträge
 
Delphi 2007 Professional
 
#4

Re: TClientsocket soll warten in Thread

  Alt 20. Nov 2009, 14:30
ich sag mal das "sleep" die falsche möglichkeit ist...
sleep müsste meines wissens das gesammte programm anhalten/einfrieren...


EDIT:
Vielleicht nimmst du die aktuelle zeit, speicherst sie in einer variablen und überprüfst mittels timer ob die gespeicherte zeit - aktuelle zeit >= 30 sec ist ^^
  Mit Zitat antworten Zitat
aikombo

Registriert seit: 20. Nov 2009
4 Beiträge
 
#5

Re: TClientsocket soll warten in Thread

  Alt 20. Nov 2009, 14:31
Zitat von stho:
ich sag mal das "sleep" die falsche möglichkeit ist...
sleep müsste meines wissens das gesammte programm anhalten/einfrieren...
Ganz genau, deshalb frage ich nach einer Alternative
  Mit Zitat antworten Zitat
stho

Registriert seit: 16. Sep 2009
Ort: 127.0.0.1
288 Beiträge
 
Delphi 2007 Professional
 
#6

Re: TClientsocket soll warten in Thread

  Alt 20. Nov 2009, 14:32
siehe meinen nachtrag
Hab ihn gerade hinzugefügt als du deine antwort verfasst hast
  Mit Zitat antworten Zitat
uoeb7gp
(Gast)

n/a Beiträge
 
#7

Re: TClientsocket soll warten in Thread

  Alt 20. Nov 2009, 14:52
Ok, die Komponente ist auf ctNonBlocking gestellt, dadurch kommt ein
Asynchronen Client Socket zur Anwendung.

Dieser Client Socket wird somit durch Windows Messages mit Events versorgt.
Da brauchst Du nichts mehr selber zu implementieren, macht alles die "Black Box".

Also einfach einen Timer verwenden, und periodisch alle 30 sec ein send durchführen.

Sieh dir mal das mit Delphi mitgelieferte Chat Demo an.

lg.
  Mit Zitat antworten Zitat
aikombo

Registriert seit: 20. Nov 2009
4 Beiträge
 
#8

Re: TClientsocket soll warten in Thread

  Alt 20. Nov 2009, 14:59
Das Problem mit dem Timer ist aber, dass ich den ja irgendwie in dieser
Prozedur erstellen muss und wie komm ich dann an das event, wenn der Timer seine
30Sekunden erreicht hat?
  Mit Zitat antworten Zitat
uoeb7gp
(Gast)

n/a Beiträge
 
#9

Re: TClientsocket soll warten in Thread

  Alt 20. Nov 2009, 15:03
Ok, bitte nicht bös sein, aber Du verstehst die Arbeitsweise der Komponete nicht richtig.
Es ist wirklich notwendig dass Du dir zuvor das Teil mal genauer (Demo Chat) ansiehst.
Dann wird einiges leichter verständlich werden.

lg.
  Mit Zitat antworten Zitat
stho

Registriert seit: 16. Sep 2009
Ort: 127.0.0.1
288 Beiträge
 
Delphi 2007 Professional
 
#10

Re: TClientsocket soll warten in Thread

  Alt 20. Nov 2009, 15:12
klar kannst du deinen timer zur lautzeit erstellen ^^
und nach dem erstellen sagst du einfach:


TimerName.onTimer := EreignissName;
Delphi-Quellcode:
procedure TForm1.EreicgnissName(Sender: TObject);
begin
  //XYZ
end;
Das weist dem TimerEreigniss einfach die passende procedure zu ^^
  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 16:22 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