Entwickler-Ecke
Internet / Netzwerk - Indy - TCP Client verbindet nicht zu Server
flaschenkind - Di 01.08.06 18:45
Titel: Indy - TCP Client verbindet nicht zu Server
Ich will einen Chat Programmieren. Jetzt scheitert es aber schon beim Verbinden :(
Ich habe einen Clienten und Server. Der Server ist gestartet und läuft. Und ich habe einen Clienten. Der soll zum Server verbinden, das tut aber irgentwie nicht.
Meine Codes:
Server starten:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| if IdTCPServer1.Active = False then begin Button1.Caption := 'Bitte warten'; Button1.Enabled := False; SpinEdit1.Enabled := False; IdTCPServer1.DefaultPort := SpinEdit1.Value; IdTCPServer1.Active := True; Label2.Caption := 'Online'; Label2.Font.Color := clGreen; Button1.Enabled := True; Button1.Caption := 'Server Stoppen'; end else begin Button1.Caption := 'Bitte warten'; Button1.Enabled := False; IdTCPServer1.Active := False; Label2.Caption := 'Offline'; Label2.Font.Color := clRed; SpinEdit1.Enabled := True; Button1.Enabled := True; Button1.Caption := 'Server Starten'; end; |
Client verbinden:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| if IdTCPClient1.Connected = False then begin Button1.Caption := 'Bitte warten'; Button1.Enabled := False; SpinEdit1.Enabled := False; IdTCPClient1.Connect(Edit1.Text, SpinEdit1.Value); if IdTCPClient1.Connected = True then begin Label2.Caption := 'Online'; Label2.Font.Color := clGreen; Button1.Caption := 'Trennen'; end else begin Button1.Caption := 'Verbinden'; ShowMessage('Es ist ein Fehler beim Verbinden aufgetreten.'); end; Button1.Enabled := True;
end else begin Button1.Caption := 'Bitte warten'; Button1.Enabled := False; IdTCPClient1.Disconnect; Label2.Caption := 'Offline'; Label2.Font.Color := clRed; SpinEdit1.Enabled := True; Button1.Enabled := True; Button1.Caption := 'Verbinden'; end; |
alias5000 - Di 01.08.06 19:46
Bist du dir sicher, dass er nicht verbindet? Verlager den Code nach idTCPClient.connect mal ins OnConnected Ereignis, da IMHO der Befehl connect in einem anderen Thread ausgeführt wird und somit schon bevor die Verbindung steht mit der Ausführung der nachfolgenden Befehle begonnen wird.
Gruß alias5000
flaschenkind - Di 01.08.06 20:09
Wie meinst du das, dem Code in OnConnected zu verlagern?
alias5000 - Di 01.08.06 20:13
Titel: Re: Indy - TCP Client verbindet nicht zu Server
flaschenkind hat folgendes geschrieben: |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| if IdTCPClient1.Connected = False then begin Button1.Caption := 'Bitte warten'; Button1.Enabled := False; SpinEdit1.Enabled := False; IdTCPClient1.Connect(Edit1.Text, SpinEdit1.Value); if IdTCPClient1.Connected = True then begin Label2.Caption := 'Online'; Label2.Font.Color := clGreen; Button1.Caption := 'Trennen'; end else begin Button1.Caption := 'Verbinden'; ShowMessage('Es ist ein Fehler beim Verbinden aufgetreten.'); end; Button1.Enabled := True;
| |
Der markierte markierte Teil aus dem Client- Code
flaschenkind - Di 01.08.06 20:17
"Der markierte markierte Teil aus dem Client- Code"
Wie meinste das?
alias5000 - Di 01.08.06 20:24
Wo liegt dein Problem? du sollst den Teil, den ich dir grade orange markiert habe (achtung: ab Zeile 7, die Forensoftware hat hier einen Bug) in das Ereignis TidTCPClient.OnConnected auslagern. Kommst du mit?
flaschenkind - Di 01.08.06 20:48
Ne, irgentwie nicht. Was meinste damit dahin auslagern?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| IdTCPClient1.Onconnected(if IdTCPClient1.Connected = True then begin Label2.Caption := 'Online'; Label2.Font.Color := clGreen; Button1.Caption := 'Trennen'; end else begin Button1.Caption := 'Verbinden'; ShowMessage('Es ist ein Fehler beim Verbinden aufgetreten.'); end; Button1.Enabled := True;); |
Das geht ja nicht. Ich verstehe nicht, was du meinst :(
alias5000 - Di 01.08.06 20:52
Du weißt, was das Ereignis OnConnected bei idTCPClient1 ist und wie man da Code reinschreibt?
flaschenkind - Di 01.08.06 23:43
Es geht. Ich habe mit Indy schon nen HTTP Server gemacht und kann jetzt nen andern PC zum Teil fernsteuern ;)
Aber hier muss ich ja vom Clienten zum Server connecten, da ist es nur ne Internet Seite, die ich aufrufe.
Im Anhang ist mal der Komplette Code, falls den Einer will. Ich hoffe, mir kann dann jemand helfen ;)
alias5000 - Mi 02.08.06 16:08
Ich würd vorschlagen, dass du erstmal das machst, was ich oben geschrieben hab :roll:
Wenn du das gemacht hast und es dann immer noch nicht funtzt, dann schau ich mir evtl. mal die Source komplett an, aber erstmal will ich, dass du das machst.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!