Downloaden unter C++

Gast #523935
Lesenswert?

Möglichkeit 1 - Du fuxt dich in die Sockets-Programmierung ein und 
programmierst dann ein Clientprogramm.

Möglichkeit 2 - Du suchst dir eine fertige Klasse für dein Vorhaben und 
schreibst eine Anwendung drum herum.

Möglichkeit 3 - Du startest aus dem C++ Programm eine Shell oder ein 
Shellkommando und rufst damit ein Tool für den Transfer wie z.B. wget 
auf. Personal Firewalls reagieren allerdings komisch auf diesen Weg.
#523951
Lesenswert?

Vorraussetzung 1: Du lernst wenigstens ein bischen C++.

system( const char* command);

startet das im C-String command enthaltene Kommando in einer
eigenen Shell.

Wie Stefan schon sagte: Besorg dir zunächst mal das Tool
wget (danach googeln).
Ach was solls: http://users.ugent.be/~bpuype/wget/

Das ist ein Commandline Werkzeug, dass dir eine Datei
besorgt. Spiel mal ein bischen in einer DOS Box damit
herum um ein Gefühl dafür zu kriegen, wie das Teil
funktioniert.

Danach rufst du es aus einem C++ Programm heraus auf,
indem du einen String zusammenbastelst, der genau
diesen Aufruf enthält. Diesen String übergibst du an
system(). Diese Funktion startet eine DOS Box und führt
den übergebenen String genauso als Kommando aus, als ob
du ihn selbst über die Tastatur eingegeben hättest.

Gast #523956
Lesenswert?

Kann C++ Hab mir dass Buch C++ für Einsteiger und dass Buch C++ für Kids 
Durchgelesen. Leider wurden genau solche Sachen nie erklärt. Benutze 
übrigens C++ Builder 6 falls dass von Beduetung sein sollte.
Gast #523959
Lesenswert?

Habe mir wget runtergeladen. Scheint wirklich ein tolles Programm zu 
sein. Aber wie ich aus meinem C++ Builder Prog ein anderes Programm 
starten kann übersteigt mein wissen leider ..wieder.
#523983
Lesenswert?

Robin T. wrote:
> Habe mir wget runtergeladen. Scheint wirklich ein tolles Programm zu
> sein. Aber wie ich aus meinem C++ Builder Prog ein anderes Programm
> starten kann übersteigt mein wissen leider ..wieder.

sag ich doch:
Du musst dir einen String zusammenbauen, der das auszuführende
Kommando enthält.

Wenn du also in der DOS-Box machst

> wget http://meinserver.irgendwo.com/index.html

um die Datei index.html vom Server http://meinserver.irgendwo.com
zu holen, dann musst du im Programm ausführen:

  system( "wget http://meinserver.irgendwo.com/index.html"; );

und natürlich kannst du den String auch zur Laufzeit aus
Einzelteilen zusammenbauen. Entweder mit std::string oder
mit C-Strings:

  char command[255];

  strcpy( command, "wget " );
  strcat( command, "http://meinserver.irgendwo.com/index.html"; );

  system( command );
Gast #524283
Lesenswert?

Besser wären IMHO die folgenden Möglichkeiten:

1) Wenn du auf system() bestehst, schreib ein Shellskript (bzw. eine 
batch-datei unter Windows). Deinen C++-Kenntnissen nach zu urteilen 
wirst du damit sehr viel schneller zum gewünschten Ergebnis kommen.
2) Wenn du auf C++ bestehst, schau dir mal libcurl an. Diese bietet dir 
ein relativ einfaches Interface, um Dateien korrekt herunterzuladen. 
libcurl ist außerdem sehr bekannt, du hast also eine große Chance bei 
Problemen Hilfe zu bekommen: http://curl.haxx.se/libcurl/



Im übrigen scheinst du eher C und nicht C++ zu programmieren, wenn du 
strcat und Konsorten anstatt std::string benutzt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren