AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Clientsocket Thread Connectet nicht?!
Thema durchsuchen
Ansicht
Themen-Optionen

Clientsocket Thread Connectet nicht?!

Ein Thema von gandime · begonnen am 20. Aug 2008 · letzter Beitrag vom 20. Aug 2008
Antwort Antwort
gandime
(Gast)

n/a Beiträge
 
#1

Clientsocket Thread Connectet nicht?!

  Alt 20. Aug 2008, 13:31
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:
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;
Main-Form:
Delphi-Quellcode:
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;
Was mache ich falsch?

mfg
gandime
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Clientsocket Thread Connectet nicht?!

  Alt 20. Aug 2008, 13:36
Die ScktComp-Komponenten arbeiten mit Windows-Fenster-Nachrichten. Du brauchst daher in jedem Fall eine Nachrichtenschleife im erzeugenden Thread:
Delphi-Quellcode:
var Msg: TMsg;

while GetMessage(Msg, 0, 0, 0) do
begin
  TranslateMessage(Msg);
  DispatchMessage(Msg);
end;
Zum Beenden musst du die Funktion PostQuitMessage aufrufen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
gandime
(Gast)

n/a Beiträge
 
#3

Re: Clientsocket Thread Connectet nicht?!

  Alt 20. Aug 2008, 13:57
thx läuft super

edit:
fast^^
jetzt möchte mein Destructor nichtmehr^^
Delphi-Quellcode:
destructor TCsThread.Destroy;
begin
  Cs.Free;
  PostQuitMessage(0);
  inherited Destroy;
end;
nach inherited macht er nicht weiter und das fenster friert ein.

edit2:
weiterhin kann ich cs.activ:=false; nicht setzen, da ich dann folgenden Fehler bekomme:
Zitat:
Erste Gelegenheit für Exception bei $75683843. Exception-Klasse EAccessViolation mit Meldung 'Access violation at address 00000000. Read of address 00000000'. Prozess PrjCSThread.exe (928)
edit3:
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
  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 13:54 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