Einzelnen Beitrag anzeigen

Executor

Registriert seit: 22. Jul 2006
12 Beiträge
 
#1

allen Clients, alle connecteten clients anzeigen lassen ;-)

  Alt 22. Jul 2006, 01:01
Erstmal hallo!
So, wie man ja am Titel erkennen kann ist mein thema (meiner meinung nach) etwas komplizierter.
Will ich nicht lang drumrumreden:
Ich bin seit einiger Zeit dabei, ein Chatprogramm zu erstellen. Ich habe nun folgendes Problem:
Ich möchte, dass man beim client, alle connecteten User sieht (wie etwa die Freundeliste in ICQ).
Da ich recht neu in delphi bin, habe ich keine ahnung wie ich es anstellen soll...Ich hab beim client eine listbox reingetan, wo die Clients dann später angezeigt werden sollen (für bessere Vorschläge als die Listbox bin ich gerne offen =))
Wie sage ich dem server nun, dass er alle connecteten User an alle senden soll?

Mein 2 Problem (aber nicht so wichtig wie das erste):
Ich habe die ini-files benutzt, um eine Datenbank zu erstellen, wo alle registrierten Accounts gespeichert sind.
Jetzt will ich, dass beim Login der Client an den Server die Daten schickt, der server diese überprüft, sein ok sendet, und die Wilkommensmeldung erscheint.
Das habe ich versucht so zu lösen:

Delphi-Quellcode:
procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  clientsocket1.socket.sendtext('>connect');
  clientsocket1.socket.sendtext(form2.edit1.Text) //form2.edit1.Text ist der AccName
  clientsocket1.socket.sendtext(form2.maskedit1.text) //das Passwort
end;
das '>connect' gehört zum "Protokoll" und wird vom client gesendet, wenn er connecten will.
Der Server darauf:

Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var Text:string;
i: Integer;
o: integer;
pw: string;
ini: Tinifile;
begin

  Text:=Socket.ReceiveText;

  if text='>connectthen memo1.Lines.Add('--client allowed to connect-->'+socket.RemoteAddress)
  else
  if text<>'>connect'
  then begin
  Memo1.Lines.add(socket.RemoteAddress+'--('+Timetostr(now)+') : '+text);
   For I := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
   begin
   with ServerSocket1.Socket.Connections [I] do
   if (Connected) then SendText(Text)
end;
end;
end;
Wie lasse ich den Client jetzt warten, bis der server die daten überprüft hat, und sein ok schickt und wie lass ich die Logindaten überprüfen und schicke diese nicht gleich an alle clients, weil diese daten (also die Logindaten) ja <>'>connect' sind.
Hoffe ihr versteht mich und könnt mir helfen

Executor
  Mit Zitat antworten Zitat