![]() |
Clientsocket Thread Connectet nicht?!
Hi,
ich schreibe mir gerade einen ClientSocket Thread und es sieht alles soweit gut aus bis darauf das der Clientsocket nicht connectet! Thread-Unit:
Delphi-Quellcode:
Main-Form:
TCsThread = class(TThread)
private Cs: TClientSocket; FHost: string; FIPort: Integer; protected procedure Execute; override; public constructor Create(CreateSuspended: Boolean); property Host: String read FHost write FHost; property Port: Integer read FIPort write FIPort; end; constructor TCsThread.Create; begin inherited Create(True); Cs := TClientSocket.Create(nil); cs.OnRead:=OnClientRead; cs.OnDisconnect:=OnDiscon; end; procedure TCsThread.Execute; begin cs.Host:=Host; cs.Port:=Port; Cs.Active:=true;//bis hierhin läuft alles super! Aber der möchte anscheinend einfach nicht connecten! end;
Delphi-Quellcode:
Was mache ich falsch?
procedure TForm1.Button1Click(Sender: TObject);
var cs:TCsThread; begin Cs:=TCsThread.Create(true); Cs.host:='127.0.0.1'; Cs.port:=1000; cs.FreeOnTerminate:=true; cs.Resume; end; mfg gandime |
Re: Clientsocket Thread Connectet nicht?!
Die ScktComp-Komponenten arbeiten mit Windows-Fenster-Nachrichten. Du brauchst daher in jedem Fall eine Nachrichtenschleife im erzeugenden Thread:
Delphi-Quellcode:
Zum Beenden musst du die Funktion PostQuitMessage aufrufen.
var Msg: TMsg;
while GetMessage(Msg, 0, 0, 0) do begin TranslateMessage(Msg); DispatchMessage(Msg); end; |
Re: Clientsocket Thread Connectet nicht?!
thx läuft super
edit: fast^^ jetzt möchte mein Destructor nichtmehr^^
Delphi-Quellcode:
nach inherited macht er nicht weiter und das fenster friert ein.
destructor TCsThread.Destroy;
begin Cs.Free; PostQuitMessage(0); inherited Destroy; end; edit2: weiterhin kann ich cs.activ:=false; nicht setzen, da ich dann folgenden Fehler bekomme: Zitat:
so jetzt habe ich verstanden das PostQuitMessage(0); den destructor aufruft aber ich bekomme wieder eine EAccessViolation sobald ich diesen Befehl aufrufe außer wenn ich ihn im OnRead property aufrufe warum? der Fehler tritt hier auf: while GetMessage(Msg, 0, 0, 0) do |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:36 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