Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Server und mehrere Clients, Id? (https://www.delphipraxis.net/146592-server-und-mehrere-clients-id.html)

schwa226 23. Jan 2010 10:35


Server und mehrere Clients, Id?
 
Hi,

wie kann ich bei Indy10 beim Server Clients unterscheiden, die Clients z.B. die gleiche IP-Adresse haben?
z.B. Ich starte einmal den Server und zwei mal local den Client. Dann melden sich beide Clients mit 127.0.0.1 an.

Beim Server bekomme ich bei Connect ja das TIdContext vom Clienten.
Im Server läuft für jeden Client ein eigener Thread um Daten abzuarbeiten.
Beim Execute (Server bekommt Data von Client) muss ich dann ja den jeweiligen Client wissen, damit er dann beim Server auf den richtigen Thread zugreift.

Geht sicher einfach, aber beim Ersten mal mit Indy ist es halt nicht so einfach.

Danke!

fkerber 23. Jan 2010 10:38

Re: Server und mehrere Clients, Id?
 
Hi!

Ich kenne mich mit Indy nicht weiter aus, aber vllt. ein allgemeiner Ansatz dazu:
Kannst du nicht jedem Client beim ersten Connect eine ID zuweisen, die der sich dann auch irgendwo zu speichern hat und bei jeder Anfrage wieder mitschickt.

Dann weißt du immer direkt, "ah, da kommt ne Anfrage von Client xyz"



Grüße, Frederic

sx2008 23. Jan 2010 11:41

Re: Server und mehrere Clients, Id?
 
Bei TCP/IP-Verbindungen muss man zusätzlich die Portadresse einbeziehen, dann kann man sie voneinander unterscheiden.
Zitat:

Zitat von rfc2663
TCP/UDP sessions are uniquely identified by the tuple of (source IP address, source TCP/UDP port, target IP address, target TCP/UDP port).

Beispiel (zwei Verbindungen mit lokalhost)
127.0.0.1:4791 <-> 127.0.0.1:4824
127.0.0.1:5291 <-> 127.0.0.1:4977

schwa226 23. Jan 2010 12:22

Re: Server und mehrere Clients, Id?
 
Danke!

Sollte dann:
Delphi-Quellcode:
AContext.Binding.PeerPort;
AContext.Binding.PeerIP;
sein!

Astat 24. Jan 2010 01:04

Re: Server und mehrere Clients, Id?
 
Zitat:

Zitat von sx2008
Bei TCP/IP-Verbindungen muss man zusätzlich die Portadresse einbeziehen, dann kann man sie voneinander unterscheiden.

Hallo schwa226, das Sockethandle identifiziert am Server jeden Client eindeutig, da braucht man keine Client Ports dazu.

Sollte bei den Indys mit "AContext.Binding.Handle" ermittelt werden können.

lg. Astat


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 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