AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi ReadLn im Thread wird nicht ausgeführt
Thema durchsuchen
Ansicht
Themen-Optionen

ReadLn im Thread wird nicht ausgeführt

Ein Thema von Lord_stelzer · begonnen am 17. Jul 2009 · letzter Beitrag vom 20. Jul 2009
Antwort Antwort
Lord_stelzer

Registriert seit: 24. Okt 2006
Ort: Hannover
13 Beiträge
 
#1

ReadLn im Thread wird nicht ausgeführt

  Alt 17. Jul 2009, 13:04
Hallo,
Ich habe ein Programm mit IdTCPCLient und eins mit IdTCPServer
Der Client schickt über diesen Thread jede Sekunde etwas an den Server
Nun habe ich am Server einen Button und bei Klick soll auch etwas an den Clienten geschickt werden.
Nur muss ich ganz oft auf den button klicken und dann wird es vielleicht beim 10. mal oder so mal gesendet und empfangen.


Thread.Execute:
Delphi-Quellcode:
procedure TMain.Execute;
begin
while not Terminated do
Begin
  S := FormatDateTime('hh:nn:ss', Time);
  hour1:=strtoint(copy(S, 1, 2));
  min1:=strtoint(copy(S, 4, 2));
  sek1:=strtoint(copy(S, 7, 2));
  sekunden1:=hour1*3600+min1*60+sek1;
  time1:=Trunc(sekunden1-sTime);
  nTime:=timetostr(secondstotime(time1));
  synchronize(Update);

  IdTCPClient.Host := GetIp(Host);
  IdTCPClient.Port := Port;
  try
  IdTCPClient.Connect(100);
  IdTCPClient.WriteLn(floattostr(time1));
  status := IdTCPClient.ReadLn('', 5);
  synchronize(poststatus);
  IdTCPClient.Disconnect;
  except
  Synchronize(Soff);
  end;
  sleep(1000);
end;
end;
IdTCPServer.Execute
Delphi-Quellcode:
procedure TForm1.IdTCPServer3Execute(AThread: TIdPeerThread);
begin
TCP3:=AThread.Connection.ReadLn;
AThread.Connection.WriteLn(Status3);
label16.caption:=TimeToStr(secondstotime(strtoint(TCP3)));
status3:='';
end;
Könnt ihr mir ne bessere Methode nennen das zu verwirklichen?
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: ReadLn im Thread wird nicht ausgeführt

  Alt 17. Jul 2009, 13:28
Welche Indy-Version ist das? Es sieht aus, wie die 9er Version aber sicher bin ich mir nicht

Ansonsten liegts wahrscheinlich daran:
Delphi-Quellcode:
 
  status := IdTCPClient.ReadLn('', 5);
Ein Timeout von 5 Millisekunden (?) könnte etwas zu kurz sein...
  Mit Zitat antworten Zitat
Lord_stelzer

Registriert seit: 24. Okt 2006
Ort: Hannover
13 Beiträge
 
#3

Re: ReadLn im Thread wird nicht ausgeführt

  Alt 17. Jul 2009, 13:32
ja ist die 9er...
wenn ich das von 5 hochsetze passiert auch bloß nichts oder der rest des programms wird nicht mehr ausgeführt
ich habs schon mit zig Werten bis 10000 probiert nix war besser... kommt auf dasselbe hinaus
  Mit Zitat antworten Zitat
Lord_stelzer

Registriert seit: 24. Okt 2006
Ort: Hannover
13 Beiträge
 
#4

Re: ReadLn im Thread wird nicht ausgeführt

  Alt 17. Jul 2009, 14:35
Wie so oft hab ich selber das Problem gefunden^^

Ich hab das sleep(1000);
raus gemacht und beim Connect von 100 auf 1000 hochgesetzt
dann wartet er nicht mehr mit der schleife sondern während der Verbindung
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.167 Beiträge
 
Delphi 12 Athens
 
#5

Re: ReadLn im Thread wird nicht ausgeführt

  Alt 17. Jul 2009, 15:39
eventuell war das Sleep garnichtmal sooo schlecht.
Wen die Verbindung gut/schnell ist, kann sich da ganz schö was an Traffic ansameln, wenn ununterbrochen was gesendet wird.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Lord_stelzer

Registriert seit: 24. Okt 2006
Ort: Hannover
13 Beiträge
 
#6

Re: ReadLn im Thread wird nicht ausgeführt

  Alt 17. Jul 2009, 17:12
hmm aber ReadLn funzt ja nur während des connects... und weil der server nicht immer Online ist würde der ander Code ja nicht ausgeführt werden bzw. sehr haken... oder eben Das ReadLn funzt nicht
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#7

Re: ReadLn im Thread wird nicht ausgeführt

  Alt 17. Jul 2009, 17:56
Achja, nowas: Du musst nicht für jede Meldung den tcpclienet erstellen, was senden, wieder trennen & freigeben - du kannst einmal am Anfang verbinden und dann jede Sekunde was senden und dann irgendwann beenden. Du kannst ja mal probieren, ob das was ausmacht
  Mit Zitat antworten Zitat
Lord_stelzer

Registriert seit: 24. Okt 2006
Ort: Hannover
13 Beiträge
 
#8

Re: ReadLn im Thread wird nicht ausgeführt

  Alt 20. Jul 2009, 10:14
ne das geht eben nicht
Der Server ist ja nicht immer an! und er soll trotzdem weiterhin senden falls der Server mal wieder On kommt
an einen Server der nicht vorhanden ist kann ich ja nicht connecten
  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:28 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