Einzelnen Beitrag anzeigen

supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Chat Server und Client mit Indy

  Alt 25. Jan 2007, 16:05
also

Zitat:
Kann mir bitte jemand eine optimale Lösung für das Übertragen der Benutzerliste geben?
baue dir ein array of Tbenutzer und übertrage das per buffer übertragung mit sendbuffer

die abfolge geht dann so:

client: write-to-server "brauche benutzerliste"
client: warte auf benutzeranzahl+buffers
server: benutzerverwaltungsobjekt wird mit criticalsection.enter gelockt (damit bei user quit wärend die liste übertragen wird, es keinen fehler gibt wenn auf ein objekt zugegriffen wird, das nicht mehr da ist)
server: anzahl benutzer übertragen (integer)
client: empfängt benutzercount für schleife, die buffers empfängt
server: mit schleife alle benutzer per buffer übertragen (Tbenutzer)
client: schleife empfängt buffers der benutzer
server: benutzerverwaltungsobjekt wird mit criticalsection.leave ungelockt

client: neuaufbau der listbox
client: evtl refresh wegen farbgebung, falls das nicht korrekt funzt

Zitat:
Es soll in der Benutzer-ListBox der Clienten durch Farben angezeigt, welche Benutzer online (grün), welche Benutzer gerade etwas eingeben (blau) und welche Benutzer Abwesend sind
einfach die liste auf OwnerDrawFixed umstellen und in dem ereignis "OnDraw" alles selber zeichnen!
funzt definitiv (muss man nur richtig umsetzen)

Zitat:
Ich übertrage doch nicht die ganze Benutzerliste, nur weil ein einziger Benutzer hinzugekommen ist oder gegangen ist Wink. Habs ja hinbekommen... Aber nur noch zu der Sache mit der ListBox aber dafür mache ich einen anderen Thread auf.
durch die Tbenutzer arrays sind alle informationen der benutzer hinterlegt (schreibt gerade, ist away usw)
die benutzer arrays sind auf server und client in gleicher form enthalten (sonst würde man sie auch nicht über buffer senden und synchronisieren können)
auf der clientseite rennt ein thread in dem seiner execute procedure eine endlosschleife mit readln dauerhaft informationen vom server entgegennimmt und auf ein cmd entsprechend reagiert
kommt z.b. vom server "client quit <id>" dann kann der client das entsprechend auswerten das er z.b. auf das "quit" reagiert und dann im weiteren schritt die id nimmt und in der benutzerliste diese id eben löscht und die benutzer listbox wieder neu aufbaut.
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat