AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi allen Clients, alle connecteten clients anzeigen lassen ;-)
Thema durchsuchen
Ansicht
Themen-Optionen

allen Clients, alle connecteten clients anzeigen lassen ;-)

Ein Thema von Executor · begonnen am 22. Jul 2006 · letzter Beitrag vom 23. Jul 2006
Antwort Antwort
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
Benutzerbild von BlackJack
BlackJack

Registriert seit: 2. Jul 2005
Ort: Coesfeld
246 Beiträge
 
Delphi 2005 Personal
 
#2

Re: allen Clients, alle connecteten clients anzeigen lassen

  Alt 22. Jul 2006, 14:49
ich würde dir dieses tutorial empfehlen, darin wird ein Protokoll für einen Chat entwickelt, der nachher auch genau das kann was du vorhast.
http://www.delphi-library.de/topic_P...201_54269.html

schonmal vorneweg: ganz so einfach wie du das mit On(Client)Read und SendText machst geht das nicht, du musst dir auf jeden fall noch nen Eingangspuffer mit einbauen.

edit: was soll eigentlich erst "text='>connect'" und dann im else-teil text<>'>connect'? im else-pfad ist die <>-bedingung doch auf jeden fall erfüllt!
See my shadow changing, stretching up and over me.
Soften this old armor. Hoping I can clear the way
By stepping through my shadow, coming out the other side.
Step into the shadow. Forty six and two are just ahead of me.
  Mit Zitat antworten Zitat
Executor

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

Re: allen Clients, alle connecteten clients anzeigen lassen

  Alt 22. Jul 2006, 16:30
mh, seh ich ja jetzt erst, mit dem <>, danke =)
Das mit dem eingangspuffer kapier ich noch nich so ganz, aber das Tutorial werd ich mir jetzt mal anschauen, danke=)
  Mit Zitat antworten Zitat
Benutzerbild von BlackJack
BlackJack

Registriert seit: 2. Jul 2005
Ort: Coesfeld
246 Beiträge
 
Delphi 2005 Personal
 
#4

Re: allen Clients, alle connecteten clients anzeigen lassen

  Alt 22. Jul 2006, 17:10
Zitat von Executor:
Das mit dem eingangspuffer kapier ich noch nich so ganz, aber das Tutorial werd ich mir jetzt mal anschauen, danke=)
Das Kreuz an der ganzen Sache ist, dass die Übertragung nicht synchron verläuft, d.h. dass nicht zwingend für jedes Socket.SendText() auch genau ein OnRead ausgelöst wird. Deswegen muss man im OnRead erstmal alles was ankommt in nen Puffer packen, und dann jedes mal schauen, ob schon ein kompletter Befehl deines Protokolls im Puffer zusammengekommen ist. Das steht aber auch alles in dem Tutorial erklärt.
See my shadow changing, stretching up and over me.
Soften this old armor. Hoping I can clear the way
By stepping through my shadow, coming out the other side.
Step into the shadow. Forty six and two are just ahead of me.
  Mit Zitat antworten Zitat
Executor

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

Re: allen Clients, alle connecteten clients anzeigen lassen

  Alt 23. Jul 2006, 02:12
Ok, hab das Tut zur Hälfte durch, vielen Dank, ist wirklich gut
Aber ehrlichgesagt, hab ich das mit dem Puffer durch deinen kurzen Kommentar besser verstanden^^

Danke für die Hilfe

Executor
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:41 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