![]() |
Chat mit Indy
moin,
erstmal sry, ich weis ihr kennt solche Betreffs schon, aber ich habe schon im Forum gesucht und es hat mir geholfen, da ich noch n anfänger in sachen netzwerk-proggen bin... mein problem ist folgendes: ich möchte gern ein chat entwickeln und habe mir auch die indy demo dazu angesehn, aber wirklich schlau wurde ich nicht daraus. also meine fragen wären dazu nur, wo und wie ich den clients, nachdem diese connected haben, das schicke, was einer von ihnen gesendet hat(~versteht ihr?). ich konnte schon in erfahrung bringen, dass der server sich den client, der sich angemeldet hat, merkt und mithilfe seiner daten ihm was senden kann. aber ich krieg das einfach nicht auf die reihe. könntet ihr mir plz helfen? thx/mfg mangaka ps:arbeite mit indy9 komponenten und habe delphi7pe |
Re: Chat mit Indy
Mahlzeit.
Chats gab es schon viele. Suche mal nach TClientSocket bzw TServerSocket. Sind sehr beliebte Komponeten. Oder Du kannst es auch mit TCPCilent / TCPServer machen so wie es bei den Demos dabei ist (D7). Aber das Demo solltest Du schon verstehen.... :wink: |
Re: Chat mit Indy
ich poste gleich nen kleines projekt (chat)
//edit ![]() normal mach ich das ja nicht so, das ich was vorkaue, aber wenns schon sooooo viele immer wieder bauen wollen, dann geb ichs halt mal raus |
Re: Chat mit Indy
mein prob ist ja das ich die winsockets von delphi nicht benutzen kann.
und zu der demo: ich habe nur soviel verstanden, wie das grob funktioniert. nur das dumme ist, ich kenne die befehle/eigentschaften nicht, die da angewendet werden. würd ich sie kennen, könnte ich selbst drauf kommen wo ich was inbauen musst. wie schon gesagt ist mein problem das empfangen(naja eher nicht) und senden an alle clients(das meine ich). @supermuckl: ich lade mir grad dein programm runter... mfg mangaka |
Re: Chat mit Indy
So habe jetzt ein bissl weiter gearbeitet und weis einfach nicht mehr weiter hier die codes vom client und server:
Client:
Code:
server:
var
Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Edit2.Enabled := false; Button1.Enabled := false; Edit1.Enabled := false; end; procedure TForm1.Button2Click(Sender: TObject); begin IdTCPClient1.Host := Edit3.Text; IdTCPClient1.Port := 9099; IdTCPClient1.Connect; // add a timeout here if you wish, eg: Connect(3000) = timeout after 3 seconds. Button2.Enabled := false; Edit3.Enabled := false; Edit2.Enabled := true; Button1.Enabled := true; end; procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = VK_RETURN then Begin if edit1.Text <> '' then Begin IdTCPClient1.WriteLn(edit1.text); edit1.text := ''; End; End; end; procedure TForm1.Button1Click(Sender: TObject); begin Edit2.Enabled := false; Button1.Enabled := false; Edit1.Enabled := true; end; procedure TForm1.IdTCPClient1Connected(Sender: TObject); begin Memo1.Lines.Add(IdTCPClient1.ReadLn); end; end.
Code:
wenn ich connecte will ich das der server mir hallo schickt, das soll der client lesen und dann in die memo einfügen. doch alles was passiert ist, dass eine fehler meldung aufpoppt mit dem folgendem inhalt:
var
Form1: TForm1; clients: TList; implementation {$R *.dfm} procedure TForm1.IdTCPServer1Connect(AThread: TIdPeerThread); begin broadcast('hallo'); clients.Add(athread); end; procedure TForm1.broadcast(msg:string); var i:integer; begin for i := 0 to clients.Count -1 do begin TidPeerThread(clients.Items[i]).Connection.WriteLn(msg); end; end; procedure TForm1.FormCreate(Sender: TObject); var Binding : TIdSocketHandle; begin IdTCPServer1.Bindings.Clear; Binding := IdTCPServer1.Bindings.Add; Binding.IP := idIPWatch1.LocalIP; Binding.Port := 9099; IDTCPServer1.Active := true; end; end. Connection closed Gracefully könnt ihr mir bitte weiterhelfen, ich habe echt kein plan mehr was ich tun soll...obwohl ich glaube das die antwort ein kinderspiel ist T_T und wenn wir schonma dabei sind, wo muss ich was einfügen, dass der server eine message, die er empfangen hat, sendet? in: IdTCPServer1Exception??? mfg mangaka |
Re: Chat mit Indy
kommt schon, ihr könnt mir nicht erzählen, dass ihr keine plan davon habt, also bitte!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 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