Wie sollte ich das angehen?
-
Hoffe, das ich mit meiner Frage die richtige Area getroffen hab.
Ich möchte ein Programm bauen, welches mir im Stundentakt Satellitenbilder vom Wetter von einer bestimmten Seite automatisch runterlädt. Brauche das zur Langzeitüberwachung.
Nun ist es so, das ich gerade mit Klassen anfange, von Bibliotheken weiß, diese aber noch nie benutzt habe.Von daher frage ich: Wie muss ich das anstellen? Was muss ich tun, damit ich das so umsetzen kann? Vor allem wär es nicht schlecht, wenn man mir mal das einbinden der Bibliotheken erklären würde. Vor allem welche Bibliotheken ich verwenden muss.
Vielen Dank schon im Voraus.
-
Okay... hab soweit alles schon vorbereitet. Eingabe der URL, des Zielpfades und Dauer des Intervalls. War ja auch nicht schwer.
Jetzt müsste ich nur wissen, wie ich das hinkriege, das der das Bild runterlädt und in einem bestimmten Ordner abspeichert. Irgend ne Idee?
-
standard c++ kann das nicht. OS, compiler, usw .. dann wirst du verschoben
-
kein fstream oder so?
-
nutze Win XP und Dev-Cpp 4.8 irgendwas...
-
Takeo schrieb:
kein fstream oder so?
damit könntest du die daten speichern aber c++ kennt kein internet
-
falls du unter Linux arbeitest würd ich an deiner Stelle n relativ simples Perlscript schreiben und das in die Crontab schreiben... Für solce Aufgaben ist C++ wohl mit Kanonen auf Spatzen geschossen
-
Wie lassen sich denn diese Bilder herunter laden? Ich meine, welche Protokolle sind denn möglich bzw. werden von dem Dienst angeboten? Rück doch mal ein paar Infos raus!!!
HTTP, FTP, Corba, SOAP (WebService)? Runter laden ist ein weiter Begriff!
Für letzteres kann ich z.B. Apaches AXIS empfehlen. Kannste auch Börsenkurse, Amazon-Buchkatalog, eBay-Auktionen usw. mit abrufen. Müssen die Dienste aber WebServices (SOAP) anbieten, was eigentlich heute verständlich sein sollte. http://ws.apache.org/axis/cpp/index.html
An die anderen: warum sollte er das nicht mit C++ machen können?
Nur weil die Protokolle nicht in der Standard-Lib drin sind? Man muß sich nur auf den bekannten Libraries und Websites umschauen, die Protokolle sind zum greifen nah. Mit C++ kann man alles machen. NUr sollte der Fragesteller sich nicht alles aus der Nase ziehen lassen.
-
Ja, sry, ihr habt ja recht. Ist nur so, das ich überhaupt nicht weiß wie ich da anfangen soll. Deswegen konnte ich nicht allzuviel genaues schreiben. Tut mir wahnsinnig leid.
Ich benutze wxdev-cpp(hab mich da vertan) auf der WinXP-Plattform. Werde aber in den nächsten Tagen Linux drauf machen.
http://wetterzentrale.de/pics/D2u.html dort findet ihr das Bild, was ich runterladen will. Es aktualisiert sich im Stundentakt. Damit ich keines verpasse, will ich die automatisch runterladen lassen und in einem Ordner abspeichern.
Man benutzt das HTTP-Protocol.Es gibt also keine Standardlib, aber wie könnte ich das dennoch lösen, ohne Perl zu nutzen? Gibt es vielleicht eine nicht-Standard-Lib?(autsch)
EDIT: Habe jetzt ein Tutorial gefunden, welches allerdings für C geschrieben wurde. Des weiteren werden dort Header verwendet, die ich garnicht habe. Kann mir jemand sagen, was ich für einen Header nehmen muss, der mit "in.h" gleichzusetzen ist? Desweiteren brauche ich noch einen Header der mit dem Header "socket.h" mithalten kann. Ich habe es erstmal mit winsock probiert, allerdings brauche ich noch Infos darüber, wie der andere Header heißen könnte. Ne Idee?
-
Also, HTTP soll es sein. Ist doch schon mal eine Aussage auf die man jetzt eine konkrete Lösung finden kann.
Du hast da mehrere Möglichkeiten, ich will die hier mal aufführen:
1. Du nimmst eine C++-Library die die nativen Network-Lib kapselt (machen alle, keiner implementiert z.B. Sockets in Windows neu). Vorteil: die Sachen sind schon fertig. Nachteil: _kann_ umständlich sein eine ganze extra Lib zu benutzen.
2. Du bastelst dir selber eine Klasse die die nativen Network-Libs kapselt. So mußt du je nach OS nur das gekapselte ändern. Vorteil: du kapselst nur das, was du brauchst. Nachteil: selber machen.
Für 1. gibt es sowas schon:
ACE kann alles was mit Network zu tun hat. Kann sogar schon zu viel und ist nicht intuitiv genug, nur um mal ein Bild runter zu laden.
wxWidgets ist modular aufgebaut, du kannst dann auch nur die Network-Lib nehmen (plus der Core-Lib). Die Abhängigkeiten sieht man hier. Hier sind alle Klassen kategorisch geordnet, scroll mal bis zu den Network Klassen runter.Für die 2. Möglichkeit würde ich mir einfach eine Klasse bauen, die den Download weg kapselt:
class http { public: istream* send(const std::string &url); };
So in etwa...
Und machst dann in der Klasse die http-Zugriffe auf WinSockets. Wenn du das ganze auf Linux portierst, brauchste nur die Änderungen in der http-Klasse machen.
Als Anlaufstelle für Windows empfehle ich http://www.codeproject.com/internet/
-
ich hab mal in meinen Header-Ordner geguckt und einen Header namens URL gefunden. Kann ich mit dem irgendwas anfangen? Was beinhaltet der?