<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[FTP Process Bar]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>wie ihr sicher seht, bin ich nicht oft hier. Ich habe aber trotzdem hier eine Frage auf der ich schon seit nem halben Jahr rumkaue, und mir niemand wirklich helfen konnte. Ich hab diese Frage schon in 2 Foren gestellt habe. Das erste Forum war das <a href="http://Entwickler-Forum.de" rel="nofollow">Entwickler-Forum.de</a> das andere, und jetzt büdde nicht auslachen, das <a href="http://wow.gamona.de" rel="nofollow">http://wow.gamona.de</a> Forum.</p>
<p>In der Überschrift stehts ja, ich möchte gerne eine Process Bar für FTP Transfers basteln, ohne dabei gleich das Rad von neuem zu erfinden, und die kompletten FTP Befehle in einer neuen Klasse zusammenstellen zu müssen.</p>
<p>Also, ne FTP Verbindung auf- und abbauen, Dateien hoch- und runterladen. Verzeichnisse und Dateien auslesen. Alles gar kein Problem. Die CFtpConnection liefert mir ja alles dahingehend, gut Verzeichnisse und Dateien auslesen macht CFtpFileFind. Die Daten in eine Ordnerstruktur packen ist auch kein Problem, das konnte ich mir alles selber zusammengooglen.</p>
<p>Dateien lassen sich gleichzeitig Hoch- und Runterladen, wird alles in eigenen Workerthreads behandelt. Jetzt interessiert mich nur eines. Wo bekomme ich die übertragenen Bytes her. Die gesamte Größe lässt sich ja einfach auslesen, wenn ich jetzt noch zyklisch die übertragenen Bytes bekomme wäre ich glücklich. Denn damit würde sich über die Formel &quot;übertragene Bytes/Gesamtgröße&quot; der Prozentwert ermitteln lassen.</p>
<p>Ich habe folgenden Ansatz schon versucht. Wenn man eine Datei herunter- oder hochläd, wird diese am Speicherort größer. Nun dachte ich mir, dass ich die Größe dieser Datei immer wieder auslese. Dabei bekomme allerdings IMMMER 0 Byte zurück, aber wenn ich im Windows Explorer schaue, wird sie immer größer. Deswegen bin ich erst auf die Idee gekommen. Wie mir nun in den anderen Foren gesagt wurde, wird die Datei in ein Temp Verzeichniss geladen. Würde ja dann auch bedeuten, wenn ich eine 200 MB Datei runterlade, müsste ich das verschieben auf der Platte von C: nach <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f628.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--fearful_face"
      title="D:"
      alt="😨"
    /> was merken. Is aber auch nicht so. Trotzdem bekomme ich von der unfertigen Datei NUR 0 Byte zurück.</p>
<p>Wie bekomme ich die übertragenen Bytes zurück? Ich sehe hunderte von FTP Clients die das schaffen, ich würds auch gern endlich mal hinbekommen, aber die CFtpConnection liefert mir ja kein Ereignis, das ich abfangen könnte, bzw. besitzt sie für solche Aktionen keine Methoden die ich dazu aufrufen könnte à la<br />
LONG CFtpConnection.GetReceivedBytes(); (Nur so als Beispiel <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> )</p>
<p>Gibt es vielleicht doch einen Kniff, mit dem ich die Größe auslesen kann. Eigentlich müsste es in den MFC doch eine Lösung dafür geben, mit dem Problem bin ich doch sicherlich nicht der erste, sodass Microsoft vielleicht auch dafür was in seine MFC reingepackt hat.</p>
<p>BÜDEEE helft mir, würde endlich mal gern mein Programm fertigbekommen.</p>
<p>Gruß</p>
<p>Markus Seidl</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/80129/ftp-process-bar</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 14:51:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/80129.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 18 Jul 2004 03:49:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to FTP Process Bar on Sun, 18 Jul 2004 03:52:25 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>wie ihr sicher seht, bin ich nicht oft hier. Ich habe aber trotzdem hier eine Frage auf der ich schon seit nem halben Jahr rumkaue, und mir niemand wirklich helfen konnte. Ich hab diese Frage schon in 2 Foren gestellt habe. Das erste Forum war das <a href="http://Entwickler-Forum.de" rel="nofollow">Entwickler-Forum.de</a> das andere, und jetzt büdde nicht auslachen, das <a href="http://wow.gamona.de" rel="nofollow">http://wow.gamona.de</a> Forum.</p>
<p>In der Überschrift stehts ja, ich möchte gerne eine Process Bar für FTP Transfers basteln, ohne dabei gleich das Rad von neuem zu erfinden, und die kompletten FTP Befehle in einer neuen Klasse zusammenstellen zu müssen.</p>
<p>Also, ne FTP Verbindung auf- und abbauen, Dateien hoch- und runterladen. Verzeichnisse und Dateien auslesen. Alles gar kein Problem. Die CFtpConnection liefert mir ja alles dahingehend, gut Verzeichnisse und Dateien auslesen macht CFtpFileFind. Die Daten in eine Ordnerstruktur packen ist auch kein Problem, das konnte ich mir alles selber zusammengooglen.</p>
<p>Dateien lassen sich gleichzeitig Hoch- und Runterladen, wird alles in eigenen Workerthreads behandelt. Jetzt interessiert mich nur eines. Wo bekomme ich die übertragenen Bytes her. Die gesamte Größe lässt sich ja einfach auslesen, wenn ich jetzt noch zyklisch die übertragenen Bytes bekomme wäre ich glücklich. Denn damit würde sich über die Formel &quot;übertragene Bytes/Gesamtgröße&quot; der Prozentwert ermitteln lassen.</p>
<p>Ich habe folgenden Ansatz schon versucht. Wenn man eine Datei herunter- oder hochläd, wird diese am Speicherort größer. Nun dachte ich mir, dass ich die Größe dieser Datei immer wieder auslese. Dabei bekomme allerdings IMMMER 0 Byte zurück, aber wenn ich im Windows Explorer schaue, wird sie immer größer. Deswegen bin ich erst auf die Idee gekommen. Wie mir nun in den anderen Foren gesagt wurde, wird die Datei in ein Temp Verzeichniss geladen. Würde ja dann auch bedeuten, wenn ich eine 200 MB Datei runterlade, müsste ich das verschieben auf der Platte von C: nach <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f628.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--fearful_face"
      title="D:"
      alt="😨"
    /> was merken. Is aber auch nicht so. Trotzdem bekomme ich von der unfertigen Datei NUR 0 Byte zurück.</p>
<p>Wie bekomme ich die übertragenen Bytes zurück? Ich sehe hunderte von FTP Clients die das schaffen, ich würds auch gern endlich mal hinbekommen, aber die CFtpConnection liefert mir ja kein Ereignis, das ich abfangen könnte, bzw. besitzt sie für solche Aktionen keine Methoden die ich dazu aufrufen könnte à la<br />
LONG CFtpConnection.GetReceivedBytes(); (Nur so als Beispiel <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> )</p>
<p>Gibt es vielleicht doch einen Kniff, mit dem ich die Größe auslesen kann. Eigentlich müsste es in den MFC doch eine Lösung dafür geben, mit dem Problem bin ich doch sicherlich nicht der erste, sodass Microsoft vielleicht auch dafür was in seine MFC reingepackt hat.</p>
<p>BÜDEEE helft mir, würde endlich mal gern mein Programm fertigbekommen.</p>
<p>Gruß</p>
<p>Markus Seidl</p>
]]></description><link>https://www.c-plusplus.net/forum/post/562984</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/562984</guid><dc:creator><![CDATA[Angren Aldaron]]></dc:creator><pubDate>Sun, 18 Jul 2004 03:52:25 GMT</pubDate></item><item><title><![CDATA[Reply to FTP Process Bar on Sun, 18 Jul 2004 06:28:50 GMT]]></title><description><![CDATA[<p>Das mit der größe auslesen ist schon ein richtiger Ansatz.<br />
Wie ließt Du die aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/562991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/562991</guid><dc:creator><![CDATA[Unix-Tom]]></dc:creator><pubDate>Sun, 18 Jul 2004 06:28:50 GMT</pubDate></item><item><title><![CDATA[Reply to FTP Process Bar on Sun, 18 Jul 2004 10:33:31 GMT]]></title><description><![CDATA[<p>Ich glaube nicht, dass die MFC das bietet, was du möchtest.<br />
Denn dort kannst du nur angeben, dass ein komplettes File übertragen werden soll, und der Befehl ist dann erst abgearbeitet, wenn die Datei komplett übertragen wurde (Synchrone Übertragung).</p>
<p>Der Schlüssel zum Glück liegt wie immer in der WinAPI.<br />
Nachdem du mit InternetOpen und InternetConnect die Verbindung hergestellt hast (möglicherweise werden diese Beiden Aufrufe durch eine MFC Klasse bereits gekapselt), öffnest du mit FtpOpenFile die Datei und beschreibst sie mit InternetWriteFile. Die Schreibfunktion rufst du mehrmals auf und schreibst die Datei &quot;stückchenweise&quot;. Diesen Wert kann man deswegen auch in FTP-programmen als Benutzer angeben.512Bytes scheint ein guter Wert zu sein.</p>
<p>Vielleicht interessieren dich auch die Callback Aufrufe der asynchronen Übertragung, wenn du unten eine Statuszeile haben möchtest, in der dann steht &quot;Baue Verbindung auf--- hergestellt- File übertragen----&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/563058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/563058</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 18 Jul 2004 10:33:31 GMT</pubDate></item><item><title><![CDATA[Reply to FTP Process Bar on Sun, 18 Jul 2004 17:43:39 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6132">@Unix</a> Tom</p>
<p>Ich habe von CFileFind mit</p>
<pre><code>CFileFind thisFinder;
</code></pre>
<p>eine Instanz erzeugt.<br />
Über</p>
<pre><code>thisFinder.GetLength();
</code></pre>
<p>lasse ich mir dann die Größe als LONG von der lokalen Datei geben. Ich habe es bisher nur mit der lokalen Dateien versucht. Ich schätze, die Größe von unfertigen Dateien auf dem FTP Server werden sich schätzungweise Problemlos holen lassen.</p>
<p>@SeppSchrot</p>
<p>Über dieses Stückchenweise runterladen habe ich auch schon versucht mit darin mal einzuarbeiten, bekomme das nur aber nicht auf die Reihe. Ich öffne die Verbindung natürlich über die MFC Methoden.</p>
<p>Ich öffne die Verbindung mit</p>
<pre><code>CInterntetSession.GetFtpConnection(host, user, password);
</code></pre>
<p>und ich speichere diesen Rückgabewert in einem Pointer auf CFtpConnection.</p>
<pre><code>*CFtpConnection = CInternetSesseion.GetFtpConnection(host, user, password);
</code></pre>
<p>Natürlich ist habe für alle Klassen Instanzen erzeugt. Der eigentliche Code bei mir lautet.</p>
<pre><code>NewpConn = NewSession.GetFtpConnection(pDlg-&gt;csConnectionData[0], pDlg-&gt;csConnectionData[1], pDlg-&gt;csConnectionData[2]);
</code></pre>
<p>pDlg ist ein Zeiger auf die Dialogfeldklasse, damit ich aus einem Workerthread heraus auf dessen Daten zugreifen kann.<br />
Im Array csConnectionData[i] stehen die Verbindungsdaten die ich für eine Verbindung mit einem FTP Server benötige, als CString gespeichert, und werden am Anfang mit Werten initialisiert.<br />
NewpConn wurde mit</p>
<pre><code>CFtpConnection* NewpConn;
und NewSession mit
CInternetSession NewSession;
</code></pre>
<p>erstellt.</p>
<p>So, wenn ich Dich jetzt richtig verstanden habe, soll ich an dem Verbindungsaufbau nichts verändern, sondern dies weiter über die MFC Regeln. Nach dem Verbindungsaufbau muss ich dann aber die Verbindungsdaten, der geöffneten Verbindung (NewpConn) irgendwo speichern, wo ich auch mit der WinAPI darauf zugreifen kann.</p>
<p>Und dann bleibt noch, wie das denn aussehen soll, ich habe mich mit der WinAPI noch nie wirklich auseinandergesetzt, bisher hat mir die MFC auch keinen Grund dazu gegeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/563281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/563281</guid><dc:creator><![CDATA[Markus Seidl]]></dc:creator><pubDate>Sun, 18 Jul 2004 17:43:39 GMT</pubDate></item><item><title><![CDATA[Reply to FTP Process Bar on Sun, 18 Jul 2004 17:49:53 GMT]]></title><description><![CDATA[<p>Sorry, Angren Aldaron bin natürlich ich Markus Seidl, ich hab nur vergessen das Häckchen bei &quot;immer Automatisch einloggen&quot; zu setzen, deswegen steht da jetzt ein anderer Benutzer.</p>
<p>gruß</p>
<p>Markus Seidl</p>
<p>PS: Ich weiß, dass die obere Antwort kein schriftellerisches Meisterstück ist. 2 oder 3 Rechtschreibfehler sind drin. Kanns jetzt nur nicht mehr editiern <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/563284</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/563284</guid><dc:creator><![CDATA[Angren Aldaron]]></dc:creator><pubDate>Sun, 18 Jul 2004 17:49:53 GMT</pubDate></item></channel></rss>