Chat mit Userliste?



  • Hey,

    das hat zwar nichts mit C++ zu tun, sondern mit Delphi, aber es geht mir auch um das Logische.

    Ich habe einen Chat geschrieben (Server und Client). Server und Client haben jeweils eine TListBox, wo die Username der anwesenden Leute angezeigt werden sollen.

    Beim Server klappt das auch einwandfrei, denn wenn sich ein Client verbindet, dann sucht sich der Server den Usernamen aus der Nachricht und fügt ihn seiner Liste hinzu und umgekehrt beim Verlassen des Chats wird der Name wieder gelöscht.

    Die Clients können sowas ja anscheinend nicht, also habe ich mir gedacht, dass der Server (sobald sich ein neuer Client verbindet), die komplette Userliste (TListBox) an die Clients sendet.

    Nur das Problem ist dabei, dass der Server bei einer neuen Verbindung ebenfalls noch ">> Username connected! <<" an alle sendet. Deswegen gibt es anscheinend Probleme mit dem Buffer oder so, denn beim Client kommt plötzlich alles so an:

    ">> User1User2User1 <<", also alles durcheinander...

    Wie mache ich sowas also richtig? Rein logisch gesehen, so dass die Clients auch eine akutelle Userliste haben?



  • vielleicht hilfts, den Buffer vor jedem Empfangen einmal auszuleeren, also mit nullen überschreiben..



  • Und wie mache ich das?
    Gibt es dafür irgendeine Funktion? Buffer->Clear? ^^



  • ich würde ja eher folgendes machen

    ich nehme mal an wenn sich ein Client zum Server verbindet bekommt er einmalig die Liste aller bisher verbunden Clients.

    wenn nun ein weiterer Client verbindet bemerkt dies der server und sendet dann eine nachricht bei dir halt ">> Username connected! <<"

    dann würde ich es einfach machen weise den Clienten doch einfach an wenn er eine solche nachricht erhält das er den namen selbständig zur liste hinzufügt.

    beim Verlassen des chats entfernst du diesen dann wieder.

    Spart nämlich ne menge Bandbreite



  • Ja, so habe ich es momentan auch, nur das Problem dabei ist doch, wenn z.B. 3 Clients verbunden sind und ein 4. hinzukommt, dann hat nur der 1. Client alle in der Liste, der 4. nur sich selbst, alle die später kamen bekommen doch nur dann wieder eine neue ">> Username connected" << Nachricht, wenn ein neuer hinzukommt, aber nicht wer schon dort ist.



  • crEo: Nein, siehe hier:

    Skippy schrieb:

    ich nehme mal an wenn sich ein Client zum Server verbindet bekommt er einmalig die Liste aller bisher verbunden Clients.


Anmelden zum Antworten