![]() |
tcpserver problem
hi leute, also was ich eigentlcih vor hatte war einen tcpclient mit einem tcpserver zu verbinden. das geht auch gut. Nur dann will ich auf dem Server einen button drücken der an den client einbefehl sendet.
Nun ist das Problem aber folgendes dass man normal des so macht athread.Connection.writeln(edit1.text); aber dies kann ich nur machen wenn die prozedure "onExecute" oder ähnliches ausgelöst wird. Aber weil ich einen button drück geht das nicht, weil der dann nie weiß an welche verbindung er eigentlcih schicken soll. Nun hab ich mir gedacht sende doch einfach an alle verbindungen, weils eh immer nur eine sein wird. Aber sowas wie idtcpserver.connection[all].writeln(edit1.text) gibts leider nicht. Weiß jemand wie ich des trotzdem hinbekomm? vielen dank :thumb: |
Re: tcpserver problem
Schau dir mal die Chat-Demos von Indy an, da steht der Code, den du suchst.
|
Re: tcpserver problem
ja des tu ich schon die letzte 15 min, aber der chat ist so umfangreich, dass ich des einfach nicht finde. Wenns jemand ohne großen aufwand mir sagen könnte, wär des echt super, vielen dank :thumb:
|
Re: tcpserver problem
:arrow: Beim Server.OnConnect den Thread in einer Variablen speichern
:arrow: OnButtonClick Variable.connection.... |
Re: tcpserver problem
okay, des hab ich vorhin schonmal probiert, aber habs jetzt nochmal veruscht. Das server fenster bleibt hängen, aber es kommt nie eine nachricht beim client an?
woran könnt des liegen der code ist folgender : server:
Delphi-Quellcode:
vielen dank
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPServer, ExtCtrls, IdAntiFreezeBase, IdAntiFreeze; type TForm1 = class(TForm) IdTCPServer1: TIdTCPServer; Label1: TLabel; Button1: TButton; Edit1: TEdit; IdAntiFreeze1: TIdAntiFreeze; procedure IdTCPServer1Connect(AThread: TIdPeerThread); procedure Button1Click(Sender: TObject); procedure IdTCPServer1Execute(AThread: TIdPeerThread); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; person : tidpeerThread; implementation {$R *.dfm} procedure TForm1.IdTCPServer1Connect(AThread: TIdPeerThread); begin label1.Caption := 'online'; person := AThread; end; procedure TForm1.Button1Click(Sender: TObject); begin form1.IdTCPServer1Execute(person); end; procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread); begin Athread.Connection.WriteLn(edit1.Text); end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 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