AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TServerSocket OnClientRead - Client # identifzieren
Thema durchsuchen
Ansicht
Themen-Optionen

TServerSocket OnClientRead - Client # identifzieren

Ein Thema von catwiesel · begonnen am 7. Mär 2010 · letzter Beitrag vom 8. Mär 2010
 
catwiesel

Registriert seit: 7. Mär 2010
3 Beiträge
 
#1

TServerSocket OnClientRead - Client # identifzieren

  Alt 7. Mär 2010, 06:08
Hallo,

ich bin mal wieder dabei mit delphi herumzuspielen. Im moment versuche ich mich an einer server/client struktur.

Ich benutze TServerSocket und TClientServer. Soweit funktioniert alles ganz gut.

Kleine Frage kommt aber auf.

Wenn an einen server mehrere clients (sagen wir 3) connected sind und der server etwas empfängt und mit OnClientRead abgearbeitet wird... Gibt es eine kleine, feine server-side möglichkeit zu identifzieren welcher client (1, 2 oder 3) das paket geschickt hat?

Fiktives Beispiel:

Delphi-Quellcode:
...
procedure TForm1.ServerSocketClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var MSG: TChatMSG;
var i:integer;
begin
If MSG.Text='disconnect me!then
  begin
  i:=SocketNumber; // <-- SocketNumber ist hier der fiktive wert/befehl den ich suche
  ServerSocket.Socket.Disconnect(i);
  end
else
{ hier käme behandlung von text wenn nicht disconnect me! }
end;
...
Irgendwo/wie hat delphi die connection doch gespeichert für sachen wie:
ServerSocket.Socket.Connections[x]
ServerSocket.Socket.Disconnect(x)

wobei ich eben nach dem rückwertsweg suche. also wie kriege ich x heraus?

Anmerkung: ich könnte mir vorstellen workarounds zu benutzen:
- ein array mit # und ip erstellen und bei jedem OnClientRead die IP mit dem array vergleichen und bei treffer i setzen. Nachteil: CPU intensiv wenn die clientzahl steigt und das array muss immer aktuallisiert werden wenn ein neuer client (dis)connected...
- jedem client eine id zuweisen und sie ihm senden und jedesmal mit an den server senden. Nachteil: overhead und man könnte es exploiten und einen anderen client disconnecten lassen...

Nur wie gesagt, wenn es ohne diese workarounds geht entschuldigt dass ich nicht von alleine drauf komme (oder ein tutorial/beispiel finde) und fragen muss.

Edit: ich hab irgendwoanders etwas von TSocketNotifyEvent gelesen mit dem das anscheinend gehen soll. leider komm ich nicht drauf wie ich das benutzen soll bzw auf die connection# komme.

Danke im Vorraus
Catwiesel
  Mit Zitat antworten Zitat
 


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 07:25 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