AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TCP-Chat-Client hängt sich auf ..
Thema durchsuchen
Ansicht
Themen-Optionen

TCP-Chat-Client hängt sich auf ..

Offene Frage von "Killian"
Ein Thema von NixChecker · begonnen am 27. Jul 2003 · letzter Beitrag vom 24. Mär 2004
Antwort Antwort
Seite 2 von 2     12   
Killian

Registriert seit: 3. Okt 2003
Ort: BexxTown
6 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: TCP-Chat-Client hängt sich auf ..

  Alt 4. Okt 2003, 13:28
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)
Error! Reality.sys is corrupt. Smash head on keyboard to restart universe.
Schreibfehler sind gewollt und sollen zur Erheiterung beitragen.
  Mit Zitat antworten Zitat
EvilDragon

Registriert seit: 15. Sep 2003
Ort: Berlin
143 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: TCP-Chat-Client hängt sich auf ..

  Alt 4. Okt 2003, 14:12
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?
www.codedragon.de check this out!
  Mit Zitat antworten Zitat
DanielS

Registriert seit: 8. Okt 2003
1 Beiträge
 
#13

Re: TCP-Chat-Client hängt sich auf ..

  Alt 8. Okt 2003, 23:45
Verabschiedet sich bei euch nicht der Server wenn man ihn schließt mit:
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.

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?
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#14

Re: TCP-Chat-Client hängt sich auf ..

  Alt 4. Nov 2003, 16:19
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!!!
Stefan
  Mit Zitat antworten Zitat
ThreadMgr

Registriert seit: 7. Nov 2003
1 Beiträge
 
Delphi 7 Professional
 
#15

Re: TCP-Chat-Client hängt sich auf ..

  Alt 7. Nov 2003, 23:49
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.
  Mit Zitat antworten Zitat
Benutzerbild von FastJack2
FastJack2

Registriert seit: 22. Mär 2004
Ort: Lübeck
54 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: TCP-Chat-Client hängt sich auf ..

  Alt 24. Mär 2004, 09:55
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 = 'hellothen
  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
wo unrecht zu recht wird, wird widerstand zur pflicht ! (c) '98 - WoF board
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 18:42 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