AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TCPServer Session/Eindeutige ID ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

TCPServer Session/Eindeutige ID ermitteln

Offene Frage von "HolgerX"
Ein Thema von DelTurbo · begonnen am 3. Dez 2017 · letzter Beitrag vom 5. Dez 2017
Antwort Antwort
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
989 Beiträge
 
Delphi 6 Professional
 
#1

AW: TCPServer Session/Eindeutige ID ermitteln

  Alt 4. Dez 2017, 10:17
Hmm..

Ich glaube, dass dies auf Basis von TCPClient/TCPServer nur möglich ist, wenn beide ein aufgesetztes Protokoll verwenden.


Hier mal (schnell überflogen) das Prinzip bei HTTP:
https://de.wikipedia.org/wiki/Sitzungsbezeichner

Ohne serverseitige Generierung einer SessionID, welche der Client bei jeder Anfrage mitsendet, wird das wohl nicht klappen.
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.248 Beiträge
 
Delphi 2007 Architect
 
#2

AW: TCPServer Session/Eindeutige ID ermitteln

  Alt 4. Dez 2017, 10:30
Hi,
also müsste ich es "nur" hinbekommen das ich im OnConnect eine ID erzeuge und dann dem Browser eine URL zurück gebe die z.b. so aussieht:

Er Connected mit http://example.com und bekommt zurück http://example.com?sid=7438432299229.

Na das wäre ja geil wenn man das mit dem TcpServer hinbekommt. Allerdings kennt der TcpServer ja keinerlei Protokoll.

Wie könnte man das umsetzen? Hat da vielleicht einer eine Idee? Ich habe im Moment ein Brett vorm Kopf. Ich habe soviel gesucht das ich im Moment nicht mehr weiß wo oben und unten ist

Erst mal vielen dank für die Anregungen.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.420 Beiträge
 
Delphi 12 Athens
 
#3

AW: TCPServer Session/Eindeutige ID ermitteln

  Alt 4. Dez 2017, 10:35
Wie könnte man das umsetzen? Hat da vielleicht einer eine Idee? Ich habe im Moment ein Brett vorm Kopf.
Erste Frage: setzt Du ein eigenes Protokoll ein/auf, oder nutzt Du ein Standardprotokoll a la HTTP?

......
Lizbeth W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.248 Beiträge
 
Delphi 2007 Architect
 
#4

AW: TCPServer Session/Eindeutige ID ermitteln

  Alt 4. Dez 2017, 10:40
Ich habe leider gar kein Protokoll. Da ich nach der Authentifizierung alles 1:1 weitergeben muss. Das ist die Schleife die ich im 2. Post verlinkt habe.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.420 Beiträge
 
Delphi 12 Athens
 
#5

AW: TCPServer Session/Eindeutige ID ermitteln

  Alt 4. Dez 2017, 11:24
Wenn Du alles 1:1 weiter geben musst, dann wird es so gut wie unmöglich. Ansonsten könntest Du via Header-Änderungen einen Cookie setzen und diesen später wieder auswerten.

......
Lizbeth W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
ghubi01

Registriert seit: 18. Nov 2017
136 Beiträge
 
Delphi 12 Athens
 
#6

AW: TCPServer Session/Eindeutige ID ermitteln

  Alt 4. Dez 2017, 11:32
Hallo,

die TIdHTTPServer Klasse enthält ein Property "SessionList" das als Container für TIDHTTPSession Instancen dient.
TIDHTTPSession enthält ein Property "SessionID". Ich habe mich jetzt nicht näher damit beschäftigt, aber vielleicht
kannst Du damit irgendwie arbeiten.
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.248 Beiträge
 
Delphi 2007 Architect
 
#7

AW: TCPServer Session/Eindeutige ID ermitteln

  Alt 4. Dez 2017, 12:11
Wenn Du alles 1:1 weiter geben musst, dann wird es so gut wie unmöglich. Ansonsten könntest Du via Header-Änderungen einen Cookie setzen und diesen später wieder auswerten.
Mit 1:1 habe ich mich unglücklich ausgedrückt. Ich bin auch noch im IdTCPServer.OnConnect. Um das überhaupt mal ans Laufen zu bekommen hab ich dort die PeerIP geholt und mir mit der ZielAdresse wo er hin soll in einer Stringliste gemerkt.

Das klappt auch alles wunderbar. Aber ich muss über eine eindeutige ID gehen. Gibt nichts womit ich im OnConnect, wie eben von HolgerX beschrieben, irgendwas an den Browser übergeben kann? Und lasse ihn dann ins OnExecute springen. Wenn er wieder über OnConnect kommt müsste der Browser die ID die ich ihm geben habe ja wieder mitbringen und ich kann ihn eindeutig zuordnen.

Gibt es eventuell irgendwas was ich in das Onconnect einbauen kann, und er mit diesen Parameter setzt bzw. holt?
Oder müsste ich das HTML von Hand zerpflücken eine Antwort mit der ID geben und dann ins Execute laufen lassen? Ich denke mal das es sehr aufwendig ist, oder?

Nachtrag: Es müsste eine Komponente sein die ich auch in Codetyphon wieder finde. Das soll später auf einem Unix-System laufen.
Noch ein Nachtrag: Es reicht im Grunde auch wenn es nur auf Delphi läuft. Hauptsache ich komme der Sache näher.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!

Geändert von DelTurbo ( 4. Dez 2017 um 12:20 Uhr)
  Mit Zitat antworten Zitat
4dk2

Registriert seit: 4. Sep 2007
176 Beiträge
 
#8

AW: TCPServer Session/Eindeutige ID ermitteln

  Alt 4. Dez 2017, 15:33
TCP alleine gibt das nicht her. Selbst wenn irgendwo ne Sessionliste existiert, basiert die auf PeerIp und Port.
Wenn du im Connect schon weitere Kommunikation Blocken willst wirst du keine andere Möglichkeit haben.

Im Execute kannst du natürlich z.b. ne erst PW/User zum Server schreiben, Dort verifizieren und dann ID zum Client schreiben.
Aufm Server noch nen Timeout hinterlegen und beim nächsten mal mit der ID vergleichen, die der Client jetzt immer schickt...

TIdContext müsste ausserdem ein Data Property haben, dem du z.b. ein Objekt zuordnen kannst.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#9

AW: TCPServer Session/Eindeutige ID ermitteln

  Alt 4. Dez 2017, 11:25
Was du versuchst ist ohne einen extra Protokoll-Layer leider nicht zuverlässig möglich. Eventuell könntest du SOCKS verwenden bzw. darauf aufbauen. Entsprechende Komponenten dafür haben die Indys beiliegen und eigentlich jeder Browser unterstützt das Protokoll. Mit Tools wie "Proxyfier" kann der Support sogar für beliebige Anwendungen nachgerüstet werden.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  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 16:21 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