Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Socket Handle ändert sich bei der selben Verbindung (TidFTP) (https://www.delphipraxis.net/36768-socket-handle-aendert-sich-bei-der-selben-verbindung-tidftp.html)

m0sch3r 25. Dez 2004 13:29


Socket Handle ändert sich bei der selben Verbindung (TidFTP)
 
Fröchliche Weinachten an alle.....:))
ich denke ich bin nicht der einzige der in solch einer festlichen Zeit sich geistig selber mißhandeld....:))

Das Problem:
Es findet eine Ubertragung enes Files durch Indy FTP Server/client Komponente(TidFTP)

Zur Laufzeit des Programms mussen mehrere Verbindungen erschaffen werden dazu existiert eine Klasse die das ganze leitet..
Delphi-Quellcode:
//Classe die die ganzen FTP verbindungen menagt
TFTPDownloadClass = Class(TObject)
                   protected
                   FFTPConnections       : array of TFTPConnection;
                   public
                   FInUse                : boolean;
                   constructor Create;
                   procedure StartFTPConnection(DownloadFile : TDownloadfile);          //Startet eine neue FTP verbindung
                   function FTPExistsOnDfile(DownloadFile         : TDownloadfile): boolean; //Pruft ob ein Download existiert
                   procedure DelNotConnected();    //Schliest eine FTP verbindung
                   function GetConnectionOnHandle(handle : double): TFTPConnection;
                   end;
//Type fur den array der FTP verbindungen
TFTPConnection = record
                   FFTPConnction        : TidFTP;
                   FFTPFile             : TDownloadFile;
                   FFTPHandle           : double;
                   end;
Beim starten eines Downloads wird der Handle der aktuellen Verbindung zur den ganzen Daten zugefugt (Verzweiflungstat, normalerweise ist er auch so vorhanden(socket.binding.handle))

Das ninzufuegen des Handles zur der aktuellen Verbindung
Delphi-Quellcode:
 FFTPConnections[high(FFTPConnections)].FFTPConnction.Connect();
///Schreibe den Socket Handel in eine Speziele Variable,
  FFTPConnections[high(FFTPConnections)].FFTPHandle := FFTPConnections[high(FFTPConnections)].FFTPConnction.Socket.Binding.Handle;
An der Stelle wenn man den Handle ausliest, hat er als Beispiel den Wert 1488

Während des Downloads...!!!! im onWork Ereignis des sockets, möchte ich durch den Handle auf die ganzen Daten zugreifen die mit dem Socket verbunden sind(Filename, Filegröße u.s.w...)

Das OnEreignis wurde zur Laufzeit hinzugefugt
Delphi-Quellcode:
@FFTPConnections[high(FFTPConnections)].FFTPConnction.OnWork          := @FTP1Work;
im OnWork Event wird durch das Casten auf die Eingenschaften des Sockets zugegrifen...!!
Delphi-Quellcode:
procedure FTP1Work(Self, Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
var
   Dummy   :   TFTPConnection;
begin
     Dummy := FTPVerbindungen.GetConnectionOnHandle(TidFTP(Sender).Socket.Binding.handle);
end;
Leider hat das Handle an dieser Stelle den Wert 1464 (Wert beim Verbindugsaufbau 1488).

Zur Testzwecken wird nur eine FTP verbindung aufgebaut, von daher kann theoretisch die selbe Verbindung keine zwei verschiedene Handles haben...!!!!

Wieso ändert sich das Handle bei der selben Verbindung..!?


bin jedem für jegliche Hilfe dankbar...:))

SirThornberry 25. Dez 2004 13:54

Re: Socket Handle ändert sich bei der selben Verbindung (Tid
 
das könnte daran liegen das für die Datenübertragung noch eine weitere Verbindung auf einem anderen Port geöffnet wird

m0sch3r 25. Dez 2004 14:12

Re: Socket Handle ändert sich bei der selben Verbindung (Tid
 
Zitat:

Zitat von SirThornberry
das könnte daran liegen das für die Datenübertragung noch eine weitere Verbindung auf einem anderen Port geöffnet wird

ich nehme an das Handle was ich am Anfang "Anzapfe" ist der Steurerung Kanal...!!!
wie kann ich dann den Handle von dem Datenubertraguns kanal anzapfen....!?


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