AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Server UserListe abfragen

Ein Thema von Frage95 · begonnen am 15. Nov 2013 · letzter Beitrag vom 17. Mai 2014
Antwort Antwort
Seite 3 von 4     123 4      
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#21

AW: Server UserListe abfragen

  Alt 15. Nov 2013, 15:46
Delphi-Quellcode:


for i := 0 to Server.Socket.ActiveConnections -1 do
  Server.Socket.Connections[i].SendText(Nachricht);
Das ist mein Server.
Das sieht nicht sehr threadsicher aus. Änderungen an ActiveConnections während des Schleifendurchlaufs können zu Access Violations oder anderen Problemen führen.

Bei Indy gibt es LockList/Un Methoden, damit man auf die Connections threadsicher zugreifen kann (http://stackoverflow.com/questions/5...y-tidtcpserver).

Gibt es so etwas auch für diese TCP Serverkomponente?
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#22

AW: Server UserListe abfragen

  Alt 18. Nov 2013, 09:04
Ich werf mal dieses Tutorial in den Raum:

http://www.entwickler-ecke.de/topic_...s_54269,0.html
Ralph
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#23

AW: Server UserListe abfragen

  Alt 19. Nov 2013, 10:21
^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?
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Frage95
(Gast)

n/a Beiträge
 
#24

AW: Server UserListe abfragen

  Alt 20. Nov 2013, 10:21
Also ehrlich gesagt bin ich ziemlich überfragt ich bin ein Neuling in Delphi oder allgemein in der Programmierung.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#25

AW: Server UserListe abfragen

  Alt 20. Nov 2013, 18:08
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.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
ramboni

Registriert seit: 3. Dez 2012
24 Beiträge
 
Delphi XE Starter
 
#26

AW: Server UserListe abfragen

  Alt 17. Mai 2014, 00:55
Man kann die Namen auch in den Benutzerdaten des Socket speichern.
Muß dann beim erstellen der Liste nur alles sockets auflisten und da den Namen auslesen.

Oder wenn es nur in der Userlist gespeichert wird,
dann macht es sich nicht schlecht da auch den zugehörigen Socket mit zu speichern, damit man eine Verbindung zwischen Socket und Benutzer hat.

PS: Useranzahl := Userlist.Count;
Hi,

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
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#27

AW: Server UserListe abfragen

  Alt 17. Mai 2014, 01:02
Wie kann ich denn den Socket mit in einer Stringlist speichern?
Sinnvoll ist es das erst gar nicht mit einer StringList speichern zu wollen.

Welche Delphi-Version setzt du denn ein (kann man aus deinem Profil ja leider nicht ersehen)?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
ramboni

Registriert seit: 3. Dez 2012
24 Beiträge
 
Delphi XE Starter
 
#28

AW: Server UserListe abfragen

  Alt 17. Mai 2014, 02:44
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?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#29

AW: Server UserListe abfragen

  Alt 17. Mai 2014, 02:53
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
ramboni

Registriert seit: 3. Dez 2012
24 Beiträge
 
Delphi XE Starter
 
#30

AW: Server UserListe abfragen

  Alt 17. Mai 2014, 03:02
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      

 

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 15:11 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