Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Chat mit Indy (https://www.delphipraxis.net/45039-chat-mit-indy.html)

mangaka 28. Apr 2005 13:38


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

Harry M. 28. Apr 2005 14:50

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:

supermuckl 28. Apr 2005 15:09

Re: Chat mit Indy
 
ich poste gleich nen kleines projekt (chat)

//edit
http://www.delphipraxis.net/internal...ct.php?t=52936

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

mangaka 28. Apr 2005 16:35

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

mangaka 29. Apr 2005 16:25

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:
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.
server:
Code:
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.
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:
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

mangaka 29. Apr 2005 18:43

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 20:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz