Forum
Tipps
News
Menu-Icon

C++ URLDownloadToFile(UpdateProgramm)

Ich habe auf einen Server eine .txt hochgeladen, die ich mit
URLDownloadToFile speichern will. Jedoch funktioniert dies so gut wie nie. Ich bedanke mich im Vorraus für Hilfe  :D (Das ist nur ein Testprojekt für Zukunfstpläne) Code:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int ver;
int veractual;
#pragma comment (lib, "Urlmon.lib")

HRESULT dl;
void Update()
{

                                
   dl = URLDownloadToFile(NULL, TEXT("http://205.196.120.191/0qohbu8w08wg/6vqr2u7r7n562v1/ver.txt"), TEXT("ver.txt"), NULL, NULL);
   Sleep(1000);
   if( dl == S_OK )
   {
      cout << "Versioninformationen gedownloadet!"<<endl<<"Es wird gecheckt ob diese Version veraltet ist! (ENTER)"<<endl;
      getchar();
   }
   else
   {
      cout << "Server nicht erreichbar!(ENTER)";
      getchar();
      exit(0);
   }
   ofstream upf;
   upf.open("ver.txt",ios::in);
   if(upf.is_open())
   {
      cout << "Versionsinformationen geladen! (ENTER)"<<endl;
      getchar();
   }
   else
   {
      cout << "Versionsinformationen konnten nicht geladen werden! (ENTER)"<<endl;
      getchar();
      exit(0);
   }
   upf << ver;
   if(veractual<ver)
   {
      cout << "Ein Update ist verfügbar. Updaten?" << endl << "1=Ja" << endl << "2=Nein" << endl << "Auswahl: ";
      int    menu;
      cin >> menu;
      switch(menu)
      {
         case 1:
            cout << "Nur ein Test der funktionalität!"; //NOCH NICHT FERTIG!
            break;
         case 2:
            cout << "Es wird NICHT geupdatet!";
            break;
      }
   }
   else if(veractual>ver)
   {
      cout << "ERROR! Die Version ist aktueller als wie auf dem Server vorhanden!"<<endl<<"(Vermutlich Server Error!) (ENTER)";
   }
   else
   {
      cout << "Die Version ist auf dem neusten Stand. (ENTER)"<<endl;
   }
}
int _tmain(int argc, _TCHAR* argv[])
{   
   SetConsoleTitle(_T("Updater"));
   cout << "Updater kontaktiert Server..."<<endl;
   veractual=1;
   ofstream crvertxt;
   crvertxt.open("veractual.txt",ios::out);
   crvertxt << veractual;
   Update();
   remove("ver.txt");
   remove("veractual.txt");
   getchar();
   return 0;         
}


Antworten zu C++ URLDownloadToFile(UpdateProgramm):

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi,

was heisst "so gut wie nie"? Klappt es manchmal? Kannst du irgendwie abgrenzen, unter welchen Bedingungen es immer/fast immer klappt und unter welchen nicht?

Welche Fehlermeldung bzw. welches Ergebnis kommt, wenn es nicht klappt?

Für bessere Lesbarkeit wäre es nett, wenn du den Quellcode in:

[code][/code]

setzt.

Spontan würde ich den Fehler hier vermuten:

Sleep(1000);
   if( dl == S_OK )
Da es manchmal länger als 1 Sekunde dauern kann, bis ein Server antwortet. Leider kenne ich mich mit C++ nicht so aus. Aber es müsste dort doch auch eine While-Schleife geben, mit der man abfragen kann, ob der Download der Seite schon abgeschlossen ist.

Ich könnte mir z.B. vorstellen, dass es so aussehen müsste:

while( dl != S_OK )
{
  Sleep(10);
}

ggf. kannst du die Schleife noch durch einen Inkrement erweitern und ab einem bestimmten Wert abbrechen.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

So gut wie nie heißt nie,
Habe das Problem anders gelöst(wget)
Und mittlerweile schon mit Fenstern :D
Naja wenn der Status nich S_OK wird ist dass eine Endlosschleife ^^.
Danke für die Hilfe!
MFG MultiStrike

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Naja wenn der Status nich S_OK wird ist dass eine Endlosschleife ^^.
ggf. kannst du die Schleife noch durch einen Inkrement erweitern und ab einem bestimmten Wert abbrechen.

Damit würdest du die Endlosschleife brechen. Ggf. statt dem Inkrement halt vorher einmalig die Zeit abfragen und in der Schleife die Dauer messen und ab z.B. 10 Sekunden die Schleife abbrechen. Das wäre genauer.

« SSL Zertifikat mit Unterzertifikat (ohne Root CA) signierenMicrosoft Expression Web 4 jetzt Freeware »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Grundstrich
Der Begriff des Grundstrichs im Bereich der Typografie, bezeichnet den senkrechten Strich der Buchstaben. Bei Schriftarten mit variabler Strichstärke, wie zum Beispi...

Haarstrich
Der Begriff Haarstrich stammt aus dem Bereich der Typographie. Bei Schriften, wie zum Beispiel der Antiquaschrift mit unterschiedlichen Strichstärken, wird zwischen ...

Application Server
Ein Application Server, zu deutsch Anwedungsserver, ist ein Netzwerkrechner (Server) auf dem verschiedenste Anwendungsprogramme ausgeführt werden können. Der Be...