Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TCP-Chat-Client hängt sich auf .. (https://www.delphipraxis.net/6927-tcp-chat-client-haengt-sich-auf.html)

Killian 4. Okt 2003 12:28

Re: TCP-Chat-Client hängt sich auf ..
 
Moinsen!
Also es geht mit Threads....sogar besser als ich gedacht habe.
Wenn ihr die INDY Demos habt, dann schaut auch mal die demo im Verzeichnis "IdTCPDemo" an....die funzt einwandfrei. Hab mich da zwar erst ein bissel schwer mit dem code gaten aber midder Hilfe kriegt man ja alles raus.

Gruss Killian

PS THX @ Kamil 8)

EvilDragon 4. Okt 2003 13:12

Re: TCP-Chat-Client hängt sich auf ..
 
stimmt, di efuntz fehlerfrei, aber kann man di eauch übers www nutzen und so umschreiben das man sein nick eingeben kann ect... halt wie bei dem anderem chat-demo??? wenn ja, könnte jemand den code posten bzw. schreiben wie?

DanielS 8. Okt 2003 22:45

Re: TCP-Chat-Client hängt sich auf ..
 
Verabschiedet sich bei euch nicht der Server wenn man ihn schließt mit:
Delphi-Quellcode:
TCPServer.Active := False;
Der Server meldet sich dann immer mit : "Zeitüberschreitung beim Beenden der Threads"
wenn ich den server einfach auf active = false setze.

Wenn ich versuche die Threads zu terminieren mit.

Delphi-Quellcode:
IdThreadMgrDefault1.TerminateThreads;
Meldet sich der Debugger mit dem Fehler in der Klasse: EIdTerminateThreadTimeout.

Die Kompilierte Anwendung mit: "Zeitüberschreitung ..."

Ich muss sagen in der Delphi Programmierung bin ich neu, und wie das mit den Threads gemanged werden soll versuche ich eigentlich gerade anhand eines eigenen Chats zu verstehen, nur habe ich das Gefühl das die Demo´s outdated sind?

Kann mir vllt. irgendjemand in kurzform versuchen die IdThreadMgrDefault Komponente zu erklären und wie man sie sauber programmiert einsetzt?

Stevie 4. Nov 2003 15:19

Re: TCP-Chat-Client hängt sich auf ..
 
Hey Leute,
ich hab das gleiche Problem (Prog mit TIdTCPClient(Indy9) hängt sich auf!)

Ich bin zum Glück in der Lage auf D6 und D7 zu testen.
Mit D6Prof kompiliert funzt die Sache wunderbar, aber wehe ich kompiliere denselben Code mit D7Prof; dann hängt sich das Programm auf! Was soll denn das!? HIIILFE!!!

ThreadMgr 7. Nov 2003 22:49

Re: TCP-Chat-Client hängt sich auf ..
 
Eine kleine Lösung, die zwar noch eine Compilermeldung aber keinen Laufzeitfehler mehr bringt:

procedure TMain.Ende(Sender: TObject);
var
i:Integer;
tx:TList;
begin
tx:=IdTCPServer.Threads.LockList;
for i:=0 to tx.count-1 do
TIdPeerThread(tx[i]).Connection.DisconnectSocket;
IdTCPServer.Threads.UnlockList;
IdTCPServer.active:=false;
end;

Achtung: Mit "Disconnect" funktioniert es (bei mir) nicht.

FastJack2 24. Mär 2004 08:55

Re: TCP-Chat-Client hängt sich auf ..
 
also ich hab das folgendermassen gelöst:

aber bevor ich anfange noch ein punkt...

Code:
    srv: TIdTCPServer;
    cli: TIdTCPClient;
damit der code verständlich wird ;)

client-send code:
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
begin
  cli.OpenWriteBuffer;
  cli.WriteInteger(length('hello'));
  cli.Write('hello');
  cli.CloseWriteBuffer;
end;

server-code:
Delphi-Quellcode:
procedure TForm1.srvExecute(AThread: TIdPeerThread);
var
  tmp: string;
begin
  tmp := athread.Connection.ReadString(athread.Connection.ReadInteger);
  if tmp = 'hello' then
  begin
    AThread.Connection.WriteInteger(length('helloagain'));
    AThread.Connection.Write('helloagain');
  end;
end;

client receive code:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  tmp: string;
begin
  if cli.Connected then
  begin
    cli.ReadTimeout := 10; // WICHTIG !!! sonst hängt er sich auf ...
    try
      tmp := cli.ReadLn;
      if length(tmp) > 0 then
        showmessage(tmp);
    except
      //
    end;
  end;
end;

gibt dabei nur ein problem ...
jedes mal wenn der timer ausgelöst wird und keine daten zum client gesendet wurden, wird eine exception ausgelöst ... sehr nerfig, wenn der timer auf 100 steht *fg*
also hab ich zum testen des projekts die delphi-exceptions ausgeschaltet ...
auch nicht die beste methode aber was anderes kommt mir jetzt nicht in den sinn...

greetz
-FastJack2


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:23 Uhr.
Seite 2 von 2     12   

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