![]() |
AW: Server UserListe abfragen
Zitat:
Bei Indy gibt es LockList/Un Methoden, damit man auf die Connections threadsicher zugreifen kann ( ![]() Gibt es so etwas auch für diese TCP Serverkomponente? |
AW: Server UserListe abfragen
|
AW: Server UserListe abfragen
^erst das Tutorial lesen!
Du musst dir wenn du einen Chat baust, etwas Gedanken über dein Protokoll und die Zustände der Verbindungen Gedanken machen. Die eigentliche Verbindung/Connection ist ja nur der Transportkanal für Daten. Vom Ablauf: Der Client muss sich verbinden. Der Server lässt die Verbindung zu und merkt sich (z.B. via statemachine) in welche Zustand die Verbindung ist. Das ist derzeit nicht angemeldet bzw. Gast. Nun schickt der Client Benutzer und Passwort. Der Server prüft es bei Fehler wird der Client über die nicht erfolgreiche Anmeldung informiert. Ist es erfolgreich, dann muss der Zustand der Verbindung auf Angemeldet umgeschaltet werden und ggf. der Benutzername mit der Verbindung zusammen gespeichert werden. Wenn das mehrere Clients machen, dann hast du deine Benutzerliste. Wenn nun eine Chat-Nachricht kommt, dann muss diese weitergeleitet werden, wenn der Sender den angemeldeten Zustand hat. Die Weiterleitung an aller verbundenen Clients (so können Gäste mitlesen, aber nicht schreiben). Wird eine Verbindung getrennt, dann muss der Benutzer aus der Benutzer-Verbindungsliste entfernt werden. Persönliche Nachrichten lassen sich auch schreiben, in dem in der Nachricht ein Empfänger ist. Dann muss nur durch die Verbindungsliste gegangen werden und dann an jede (mehrere!) die dem Benutzer gehört, die Nachricht schicken. Also wie soll dein Protokoll zur Steuerung (Anmelden, Abmelden, Persönliche Nachrichten, Nachrichten an Raum, Passwort-Ändern, Benutzer-Erstellen etc.) aussehen. Wie soll eine Nachricht aussehen, denn diese ist ja auch nur ein Container, welcher durch den Datenkanal geschickt wird. Hat diese wie eine Email Absender/Empfänger oder wird das auf Protokoll-Ebene entschieden? Wie überträgt man die Nachricht, dass dort enthalten Befehle nicht als Protokoll ausgewertet werden? |
AW: Server UserListe abfragen
Also ehrlich gesagt bin ich ziemlich überfragt ich bin ein Neuling in Delphi oder allgemein in der Programmierung.
|
AW: Server UserListe abfragen
Das haben wir uns schon gedacht und wollten dezent drauf hinweisen, dass ein Chat nicht mal eben so programmiert ist.
Es wird dann halt immer interessant, wenn "einfache" Anforderungen wie "Benutzerliste" dazu kommen und die eigentliche Problematik dahinter nicht gesehen wird. Das geht dann auch nur mit Erfahrung. Netzwerkzeug hat auch viel mit Sicherheit zu tun - unerfahrend besser die Finger von lassen. Vielleicht ein einfaches "Start"-Projekt? Es gab hier mal in der DP ein Betrag mit Beispielprojekten. Hat den mal bitte jemand zur Hand. Wenn du es dennoch probieren willst, dann schau dir mal das POP3-Protokoll an. Das ist recht einfach und gibt dir vielleicht paar weitere Ideen. Chat und Email sind sehr ähnlich. |
AW: Server UserListe abfragen
Zitat:
interessantes Thema. Ich versuche sowas auch gerade. Wie kann ich denn den Socket mit in einer Stringlist speichern? Wie sieht so ein gespeicherter Wert dann aus und wie kann ich danach Suchen damit ich z.B. eine Nachricht nur an diesen User senden kann? LG RamboNi |
AW: Server UserListe abfragen
Zitat:
Welche Delphi-Version setzt du denn ein (kann man aus deinem Profil ja leider nicht ersehen)? |
AW: Server UserListe abfragen
Ich teste mich seit kurzem im Programmieren, habe aber leider
keine eigene Lizens also nutz ich den Rechner eines ehem. Kollegens dafür. So genau weiß ich es aber nicht. XE irgendwas... reicht das vielleicht schon? Wo/wie speicher ich die denn, wenn nicht in einer Stringlist? |
AW: Server UserListe abfragen
Im Profil trägt man nicht die Lizenz ein, sondern die Version mit der man hauptsächlich arbeitet.
Eine StringList ist primär zum Speichern/Verwalten von Text (eine Liste mit Strings). Passt ja nicht so wirklich, wenn man Benutzer und Socket (und ...) verwalten möchte. Geht irgendwie schon, aber man ist fast nur am hin- und herwandeln (string <-> echte Information). Records und Klassen kennst du schon? Wenn nicht, dann solltest du auf jeden Fall zunächst ein paar Grundlagen-Tutorials durcharbeiten. |
AW: Server UserListe abfragen
Records und Klassen sagen mir etwas ja.
Allerdings bin ich jetzt noch mehr verwirrt :) Sind Records meine "SocketSammler", bei z.B. 5 Usern? Das Stringlistverfahren hab ich mittlerweile verstanden, da kann man einen String und ein Socket speichern nur sieht man den Socket halt einfach nicht :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz