mikrocontroller.net

Forum: PC-Programmierung Downloaden unter C++


Autor: Robin T. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Leute.


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

Autor: manfred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einfach: Mit der Maus.
Mühsamer: Mit Tab und Enter.

Autor: Robin T. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Kola (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau mal in den MAN-pages nach "socket".

Autor: Robin T. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich fonde voll viel: Socket-Server, Socket-Stream, Socket-Schnittstelle, 
Socket-Kommunikation, ...

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Robin T. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Möglichkeit 3 hört sich am besten an wie geht dass?

Autor: Robin T. (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.


Autor: Robin T. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Robin T. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Kola (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie gesagt...mit
system("wget");

aufrufen. Alternativ auch execve.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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 );

Autor: Robin T. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Kola (Gast)
Datum:

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

schreibst du halt:

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

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.