![]() |
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:
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))
//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; Das ninzufuegen des Handles zur der aktuellen Verbindung
Delphi-Quellcode:
An der Stelle wenn man den Handle ausliest, hat er als Beispiel den Wert 1488
FFTPConnections[high(FFTPConnections)].FFTPConnction.Connect();
///Schreibe den Socket Handel in eine Speziele Variable, FFTPConnections[high(FFTPConnections)].FFTPHandle := FFTPConnections[high(FFTPConnections)].FFTPConnction.Socket.Binding.Handle; 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:
im OnWork Event wird durch das Casten auf die Eingenschaften des Sockets zugegrifen...!!
@FFTPConnections[high(FFTPConnections)].FFTPConnction.OnWork := @FTP1Work;
Delphi-Quellcode:
Leider hat das Handle an dieser Stelle den Wert 1464 (Wert beim Verbindugsaufbau 1488).
procedure FTP1Work(Self, Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer); var Dummy : TFTPConnection; begin Dummy := FTPVerbindungen.GetConnectionOnHandle(TidFTP(Sender).Socket.Binding.handle); end; 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...:)) |
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
|
Re: Socket Handle ändert sich bei der selben Verbindung (Tid
Zitat:
wie kann ich dann den Handle von dem Datenubertraguns kanal anzapfen....!? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 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