![]() |
Problem mit Verbindungsaufbau
Hallo ich habe da mal eine Frage.
Und zwar habe ich in einer Client/Server Anwendung beim Client einen Button, wenn ich auf den Klicke soll die Verbindung zum Server geöffnet werden und gleich irgendwas gesendet. Das Problem ist das zwar die Verbindung hergestellt wird, aber der Text erst beim zweiten Klick auf den Button gesendet wird. Ich dachte villeicht braucht der ein paar Sekunden um die Verbindung herzustellen und habe deshalb testweise ein sleep dazwischen geschaltet, aber leider ging das auch nicht. Hier mal ein Ausschnitt vom Code:
Delphi-Quellcode:
Vielleicht kann mir ja einer von euch weiterhelfen
clientsocket1.Active:=true;
ClientSocket1.Socket.SendText('test'); Vielen Dank schon mal im voraus Fran |
Re: Problem mit Verbindungsaufbau
versuche es mal so:
Delphi-Quellcode:
clientsocket1.Active:=true;
if clientsocket1.active = true then begin ClientSocket1.Socket.SendText('test'); end; mfg Net7 |
Re: Problem mit Verbindungsaufbau
Probiers mal so, das hat bei mir den Fehler behoben.
Delphi-Quellcode:
ClientSocket1.Socket.SendText('Test' + #13#10)
|
Re: Problem mit Verbindungsaufbau
Zitat:
@Taladan: Was sollen denn die Zahlen bewirken? Bei mir tun die nichts. Jedenfalls nichts offensichtliches. |
Re: Problem mit Verbindungsaufbau
Du darfst erst ewtas senden wenn die verbindung wirklich aufebaut ist und mit active auf true setzten wird sie nicht gleich aufgebaut.
Mal so nebenbai sowas mit sleep zu lösen ist sehr unschön. Zu deinem Problem: Sende die Botschaft erst wenn beim clientsocket des Ereignis Connect auftritt dann müsste alles funkionieren |
Re: Problem mit Verbindungsaufbau
Zitat:
Ich weiß sleep legt das ganze Programm lahm, aber ein paar Millisekunde merkt man doch nicht wirklich. |
Re: Problem mit Verbindungsaufbau
Sag wir mal dein prog braucht 50 mili zum connecten. Also gibst du ihm einen sleep von 100 mili. Dein Prog funkt. Doch irgenwann ist der server oder der client so ausgelasstet des er 150 mili braucht zum connecten, was passiert? Dein Server bekommt die erste Nachricht nicht und alles kann versagen ...
Deswegen ist sleep für mich generell unschön. Wenn du aber denoch mal so ein sleep brauchst was ja vorkommen kann und auch in ordnung sein kann dann rate ich dir zu ![]() *back to topic* Hast du des mit dem Ereigniss ausprobiert? |
Re: Problem mit Verbindungsaufbau
ja den Text solltest du erst senden, wenn die Verbindung steht.
Code:
Das geht, hat aber noch einen Schönheitsfehler. Wenn der Server die Verbindung nicht annehmen kann, bleibst du mit dem client Programm in der Schleife hängen. Darum solltest du in die repeat Schleife noch eine Fehlerabfrage einbauen.
clientsocket1.open;
repeat application.processmessages; until clientsocket.active; ClientSocket1.Socket.SendText('test'); Eine bewährte Variante ist die, dass du in der onerror routine eine globale Variable veränderst, die in der repeat Schleife abgefragt wird. Das sendtext machst du auch noch von der Variablen abhängig. der Flossinger |
Re: Problem mit Verbindungsaufbau
Des ist auch unschön. Das ist viel besser:
Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin ClientSocket1.Active := true; end; procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); begin Socket.SendText('test'); end; |
Re: Problem mit Verbindungsaufbau
Ja genau,
ist eigentlich naheliegend. der Flossinger |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:35 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