AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Socket Handle ändert sich bei der selben Verbindung (TidFTP)
Thema durchsuchen
Ansicht
Themen-Optionen

Socket Handle ändert sich bei der selben Verbindung (TidFTP)

Ein Thema von m0sch3r · begonnen am 25. Dez 2004 · letzter Beitrag vom 25. Dez 2004
Antwort Antwort
m0sch3r

Registriert seit: 29. Mär 2004
121 Beiträge
 
Delphi 7 Enterprise
 
#1

Socket Handle ändert sich bei der selben Verbindung (TidFTP)

  Alt 25. Dez 2004, 14:29
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
@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...)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

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

  Alt 25. Dez 2004, 14:54
das könnte daran liegen das für die Datenübertragung noch eine weitere Verbindung auf einem anderen Port geöffnet wird
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
m0sch3r

Registriert seit: 29. Mär 2004
121 Beiträge
 
Delphi 7 Enterprise
 
#3

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

  Alt 25. Dez 2004, 15:12
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....!?
  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 09:16 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