Indy TCP Client: OnExecute? Thread verwenden?
Hallo;
beim Indy TCP Server gibt es ja die komfortable Methode OnExecute, die auch automatisch einen Thread erzeugt. Muss ich beim Client selbst einen erzeugen, in dem ich ständig readln aufrufe? |
Re: Indy TCP Client: OnExecute? Thread verwenden?
hi,
also erlichgesagt versteh ich echt dein probelm nicht. warum willst du beim client einen thread erzeugen? und warum sollte readln beim client einen thread erzeugen...??? |
Re: Indy TCP Client: OnExecute? Thread verwenden?
Beim Server erzeugt OnExecute einen eigenen Thread, oder?
Hab ich ausprobiert: sleep(10000) reingetan und die Hauptanwendung ist nicht eingefroren. Der Taskmanager hat auch mehrere Threads angezeigt. Mein Serversocket heißt "server", mein Clientsocket "client". Wenn ich im OnExecute x:=server.readln mache, friert das Hauptprogramm nicht ein. Ich lese also einen String per readln ein und verteile ihn danach weiter oder verarbeite ihn. Hmmm...wie ist das eigentlich bei mehreren Verbindungen? Wird da OnExecute mehrmals gestartet? Ein Client hat aber kein OnExecute. Wenn ich mit dem Daten empfangen will, muss ich selbst einen Thread erzeugen, oder? |
Re: Indy TCP Client: OnExecute? Thread verwenden?
nein. du kannst mit dem client nicht so einfach auf daten warten. du musst schon was hinsenden und auf eine antwort vom server warten. das ist ja das client-server prinzip. das onExecute ereignis wird immer dann ausgeführt, wenn ein client eine nachricht zum server schickt. aber umgekehrt funzt das net so ganz!
|
Re: Indy TCP Client: OnExecute? Thread verwenden?
Zitat:
Mit einem Thread? Oder gibt es da auch ein Ereignis? Zitat:
|
Re: Indy TCP Client: OnExecute? Thread verwenden?
du schreibst einfach writeln... und dann gleich dahinter variable := readln() (bin mir net ganz sicher ob der syntax stimmt) dann wir ddas was der server als nächstes zum client schickt (die antwort auf dein writeln) in der variable gespeichert. da brauchst du keinen extra thread dazu.
|
Re: Indy TCP Client: OnExecute? Thread verwenden?
Zitat:
Um zurück zur ursprünglichen Frage zu kommen: Ich muss also einen Thread erzeugen? *g* |
Re: Indy TCP Client: OnExecute? Thread verwenden?
du musst garnicht. natürlich kannst du. aber ein idAntiFreeze tuts auch.
|
Re: Indy TCP Client: OnExecute? Thread verwenden?
Zitat:
|
Re: Indy TCP Client: OnExecute? Thread verwenden?
no prob. für diese triviale lösung war das eine schwere geburt ;-) ...
|
Re: Indy TCP Client: OnExecute? Thread verwenden?
ich arbeite ja auch erst seit gestern mit Indy ;)
|
Re: Indy TCP Client: OnExecute? Thread verwenden?
wenn du einen chat CLIENT programmieren willst.. dann musst du zwangsläufig nen thread der die ganze zeit readln in einer endlosschleife macht, createn!
weil da gibt es strings von anderen usern die über den server an deinen client gesendet werden und da muss man nicht erst ne anforderung an den server schicken.. eine gute sache is die tcp client/server demo die es bei indy gibt.. da sieht man sehr schön wie man das client handling im server gestalten kann ( client record ) falls jemand die sources von meinem noch nicht fertigen secure chat system haben will der kann sich melden dann lad ichs mal hier hoch.. is so ähnlich aufgebaut wie das IRC blos net das selbe protocol |
Re: Indy TCP Client: OnExecute? Thread verwenden?
wer sagt denn das er einen chat schriebn will? und nur für einen solchen wäre das nötig...
|
Re: Indy TCP Client: OnExecute? Thread verwenden?
hab ich gesagt ".. da du einen chat schreiben willst.. " ?
|
Re: Indy TCP Client: OnExecute? Thread verwenden?
das nicht aber du redest von einem chatsystem. bei einem "normalen" system reicht anfrage - response, wozu willst du da nen thread brauchen? das ist pure resourcenverschwendung. bei nem chat ists sicherlich sinnvoll...
|
Re: Indy TCP Client: OnExecute? Thread verwenden?
Richtig geraten, es handelt sich um einen Chat :)
Zitat:
Zitat:
den server-code habe ich mir noch nicht so genau angesehen, der client ist kompliziert genug ;) |
Re: Indy TCP Client: OnExecute? Thread verwenden?
Zitat:
klar das man in so einem fall kein threading beim client braucht.. ( wo man nicht dauernd "lesen muss" ) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:43 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