AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Server/Clint Sockets - Authentifizierung programmieren???
Thema durchsuchen
Ansicht
Themen-Optionen

Server/Clint Sockets - Authentifizierung programmieren???

Ein Thema von romber · begonnen am 30. Okt 2004 · letzter Beitrag vom 30. Okt 2004
Antwort Antwort
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.164 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Server/Clint Sockets - Authentifizierung programmieren???

  Alt 30. Okt 2004, 14:23
Hallo!

Ich benutze für meine Anwendungen die Komponenten TServerSocket und TClientSocket. Zurzeit habe ich es so, dass der Server ab und zu Daten an alle aktive Client sendet:

Code:
...
for i := 0 to Server.Socket.ActiveConnections - 1 do
begin
 Server.Socket.Connections[i].SendText('Irgendwas')
end;
...
Ich möchte jetzt aber so machen, dass Clients sich bei der Verbindung authentifizieren müssen und die Daten nur an erfolgreich eingeloggten Clients gesendet werden. Aber ich habe so was noch nie gemacht und bräuchte ein Paar Tips, wie das überhaupt funktioniert und wo ich anfangen soll. Dabei habe ich überlegt (vielleicht lege ich falsch, nur ein Paar Gedanken), dass man ab sofort für jede Client-Verbindung vielleicht einen Thread (TClientServerThread oder was ähnliches) erstellen soll und damit jede Verbindung einzeln behandeln soll, denn die o. g. Code in diesem Fall meiner Meinung nach nicht mehr einsetzbar ist. Das Problem ist, dass ich in Sachen Sockets nur wenig Ahnung habe, deswegen würde ich micht freuen, wenn ich hier ein Paar wertvolle Tips oder Code-Beispiele erhalten konnte. Danke!

MfG,
Ralf
  Mit Zitat antworten Zitat
Benutzerbild von runningsoft
runningsoft

Registriert seit: 8. Okt 2004
Ort: Bernau
108 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Server/Clint Sockets - Authentifizierung programmieren??

  Alt 30. Okt 2004, 18:49
Hallo Romber,

ich habe mir zu diesem Zweck ein kleines "Übertragungsprotokoll" erstellt, dass ich dann mittels SendBuf (anstatt SendText) verschicke.

Dieses Protokoll besteht im Prinzip aus einem Record in dem ich u.a. eine ID für die Clients, einen Anweisungsstring sowie den eigentlichen Meldungsstring untergebracht habe.

Beim erfolgreichen Anmelden am Server erhält der Client, der mit der ClientID -1 initialisiert wurde, vom Server seine ClientID mitgeteilt.

Bei jeder Meldung, die ich nun vom Server an die Clients sende, wird die ClientID des Clients mitgeschickt, für den die entsprechende Meldung gedacht ist.

Das eigentliche Versenden erfolgt immer noch an alle angemeldeten Clients:

Delphi-Quellcode:
for AnzahlClients := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
   begin
   ServerSocket1.Socket.Connections[AnzahlClients].SendBuf(MessageRec,SizeOf(MessageRec));
   end;
Im OnRead - Ereignis eines jeden Clients werte ich nun nach Empfang des Buffers zuerst die ClientID aus. Ist die gesendete Clíent-ID identisch, mit der ID des Clients, weiß er "Hallo, ich bin gemeint", ansonsten wird die Nachricht einfach ignoriert.

Steffen
Steffen
  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 15:58 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