![]() |
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:
Wie kriege ich beim Client den neuen Port raus?
procedure TServer.IndyConnect(aContext: TIdContext);
var aPort: Integer; begin //Lies Port, über den sich verbunden wurde aPort := aContext.Binding.PeerPort; end; Dort gibt es die TIdContext Klasse nicht. Das OnConenct Event sieht so aus:
Delphi-Quellcode:
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.
procedure TClient.IndyConnected(Sender: TObject);
|
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 |
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? |
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 |
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 |
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 |
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