Forum: PC-Programmierung Downloaden unter C++


von Robin T. (Gast)


Lesenswert?

Hallo,

Leute.


Wie kann ich in c++ mittels Internet Adresse den Download auf Knopfdruck 
starten?

von manfred (Gast)


Lesenswert?

Einfach: Mit der Maus.
Mühsamer: Mit Tab und Enter.

von Robin T. (Gast)


Lesenswert?

Nein ich will dass wenn ich auf den Button "Downloaden"; Klicke der 
Download startet dessen Adresse  den ich in der Variable "Adresse" 
gespeicht habe.

von Kola (Gast)


Lesenswert?

Schau mal in den MAN-pages nach "socket".

von Robin T. (Gast)


Lesenswert?

Ich fonde voll viel: Socket-Server, Socket-Stream, Socket-Schnittstelle, 
Socket-Kommunikation, ...

von Stefan (Gast)


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.

von Robin T. (Gast)


Lesenswert?

Möglichkeit 3 hört sich am besten an wie geht dass?

von Robin T. (Gast)


Lesenswert?

Ich hatte schon überlegt ob ich mit nem SaveDialog einfach als Dateiort 
die Adresse angeben habs aber noch net hinbekommen

von Karl H. (kbuchegg)


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.


von Robin T. (Gast)


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.

von Robin T. (Gast)


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.

von Kola (Gast)


Lesenswert?

Wie gesagt...mit
system("wget");

aufrufen. Alternativ auch execve.

von Karl H. (kbuchegg)


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 );

von Robin T. (Gast)


Lesenswert?

Also ich habe es geschafft dass er von meinen C++ Prog aus wget startet 
und downloaet allerdings kann ich bei: system("wget"); keine variable 
angeben aus der er die adresse beziehern soll. Kann nur: system("wget 
http://www.....de); angeben kann ich dass ändern?

von Kola (Gast)


Lesenswert?

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

schreibst du halt:

char *url = "http://www.mikrocontroller.net";;
strcat(command,url);

von Chris (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.