![]() |
einfachen text per idctpserver an client senden, wie geht da
wie kann ich das machen?
ich brauche nur den befehl? werd nicht schlau aus den anderen beiträgen! alex |
Re: einfachen text per idctpserver an client senden, wie geh
niemand ne ahnung?=
|
Re: einfachen text per idctpserver an client senden, wie geh
Hi,
in den meisten Events des Servers gibt's den Parameter AThread. Dieser bezieht sich auf die Client-Verbindung, die dieses Event ausgelöst hat. Somit kannst du z.B. folgendes machen:
Delphi-Quellcode:
Wenn du aber unanhängig von einem Event was verschicken möchtest, dann geht das etwa so:
procedure TForm1.IdTCPServer1Connect(AThread: TIdPeerThread);
begin AThread.Connection.WriteLn('Hallo Welt'); end;
Delphi-Quellcode:
Dies sendet an alle verbundenen Clients die Nachricht.
with IdTCPServer1.Threads.LockList do
try for i := 0 to Count do TIdPeerThread(Items[i]).Connection.WriteLn('Hallo Welt'); finally IdTCPServer1.Threads.UnlockList; end; Noch ein Tip: Die Klasse TIdPeerThread verfügt über eine Property, die sich Data nennt. Diese kann man wunderbar dazu nutzen, an den Thread die Benutzer-Daten zu hängen, um hinterher einen bestimmten Thread herauszufinden. MfG Stevie P.S. Meine Beispiele sind mit Indy 8, und könnten etwas von der 9er-Version abweichen, die du sicherlich benutzt. |
Re: einfachen text per idctpserver an client senden, wie geh
und wie kann ich beim clienten drauf zugreifen....dort gibts ja kein onexecure oder so!
|
Re: einfachen text per idctpserver an client senden, wie geh
Wenn du schreiben willst:
Delphi-Quellcode:
Und wenn du lesen willst, was vom Server kommt, dann machst du einen Timer und ins OnTimer-Event:
IdTCPClient1.WriteLn('Hallo Welt');
Delphi-Quellcode:
var
s: string; begin s := IdTCPClient1.ReadLn(#$A, 5); if s <> '' then begin {...} end; end; |
Re: einfachen text per idctpserver an client senden, wie geh
Hänge meine Frage hier mal ran.
simple Client-Server-Anwendung Server funzt bestens. client ließt alle Daten sofern welche am socket anstehen. Nun möchte ich aber, das der Client automatisch alle 1000ms den Socket liest. Bisher war das ganze in nem Timer
Code:
Habe das Timeout auf 800 ms gesetzt. Aber entweder stürzt das Prog ab, oder es erscheint eine Exception, kommt drauf an ob ich readbuffer, oder readln nutze.
procedure TForm1.Timer1Timer(Sender: TObject);
begin try idtcpclient1.readbuffer(recvstring,20); // Habs auch schon mit readln('',800,20); versucht finally memo1.lines.add(recvstring); end; end; Die Boardsuche habe ich schon genutz, aber nisher hat nix genutzt. Danke |
Re: einfachen text per idctpserver an client senden, wie geh
Hast du es schon so versucht:
Delphi-Quellcode:
P.S.: Herzlich willkommen in der DP!
procedure TForm1.Timer1Timer(Sender: TObject);
var s: string; begin repeat s := IdTCPClient1.ReadLn('', 0, 20); if s <> '' then Memo1.Lines.Add(s); until s = ''; end; |
Re: einfachen text per idctpserver an client senden, wie geh
Gleiches Problem. Programm bleibt stehen, und wird warscheinlich versuchen Daten aus dem Socket zu lesen.
Weiterer Vorschläge? PS:Danke |
Re: einfachen text per idctpserver an client senden, wie geh
Hast du ein IdAntiFreeze auf der Form?
|
Re: einfachen text per idctpserver an client senden, wie geh
Ich hatte auch mal so ein ähnliches Problem, ich glaube da musst du Threads verwenden.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:25 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