Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy10: Neuen Port auf Clientseite ermitteln? (https://www.delphipraxis.net/72806-indy10-neuen-port-auf-clientseite-ermitteln.html)

McMorton 7. Jul 2006 07:46


Indy10: Neuen Port auf Clientseite ermitteln?
 
Hi.
Ich habe mal wieder eine Frage zu Indy 10
Wenn sich ein Client über einen bestimmten Port mit einem Server verbindet,
dann handelnd die beiden ja automatisch einen neuen Port aus.
Diesen kann man ja beim Server im OnConnect Event so abfragen:

Delphi-Quellcode:
procedure TServer.IndyConnect(aContext: TIdContext);
var
  aPort: Integer;
begin
  //Lies Port, über den sich verbunden wurde
  aPort := aContext.Binding.PeerPort;
end;
Wie kriege ich beim Client den neuen Port raus?
Dort gibt es die TIdContext Klasse nicht.
Das OnConenct Event sieht so aus:
Delphi-Quellcode:
procedure TClient.IndyConnected(Sender: TObject);
Ich habe schon alles mögliche probiert, aber egal welches Port-Property ich vom IndyClient auslese, ich lese immer nur den ursprünglichen Port, über den die Verbindung erstellt wurde.

ThomasGerstner 7. Jul 2006 07:54

Re: Indy10: Neuen Port auf Clientseite ermitteln?
 
Dein Server macht ein Listen auf dem PORT XXXX, den du vergeben hast.
Der Client meldet sich mit einer PORT-Nummer beim Server an und bekommt von diesem
den nächsten am Server frein PORT zurück.

Ich würde mal vermuten, dass das, was du ausliest schon korrekt ist.
Warum sollte der Client einen anderen PORT zugewiesen bekommen ?
(Vielleicht verstehe ich da ja was falsch)

Gruß
Thomas

McMorton 7. Jul 2006 08:26

Re: Indy10: Neuen Port auf Clientseite ermitteln?
 
Ich möchte aber den neuen vom Server zugewiesenen Port beim Client wissen.

In etwas so:
Der Server lauscht auf Port 2000
Ein Client sendet eine Verbindungsanfrage an Port 2000
Der Server weißt einen neuen Port für die Kommunikation zu zb. 2001.
Beim Server kann man diesen Port (2001) nun auslesen.
Wie kriege ich beim Client raus, das der neue Port nun 2001 ist?

Peter Wolf 7. Jul 2006 08:33

Re: Indy10: Neuen Port auf Clientseite ermitteln?
 
Hallo McMorton,

übermittle halt einfach die Info vom Server zum Client, die Verbindung steht ja schon.

Grüße
Peter

ThomasGerstner 7. Jul 2006 08:45

Re: Indy10: Neuen Port auf Clientseite ermitteln?
 
TCPSender.Socket.Binding.PeerPort liefert bei mir den Port 9999 (Listen) am Server
TCPSender.Socket.Binding.Port liefert den ausgehandelten

Gruß
Thomas

supermuckl 7. Jul 2006 10:59

Re: Indy10: Neuen Port auf Clientseite ermitteln?
 
und überprüfen kannst du das alles mit einem paketsniffer
da stehen dann alle source und desination ports drin

McMorton 9. Jul 2006 22:26

Re: Indy10: Neuen Port auf Clientseite ermitteln?
 
Vielen Dank

TCPSender.Socket.Binding.PeerPort

Das war genau was ich suchte.

Hab auch gleich ne neue Frage. Habe dafür aber einen neuen Thread aufgemacht


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