Webseite auslesen



  • Wende dich einfach an deinen Admin, sag ihm, dass du gerne mit Werkzeugen aus diesem Jahrtausend arbeiten möchtest und empfehle ihm direkt das VS Express. Die Admins, die ich kennengelernt habe, machen dann, wenn ihre eigene Arbeit sich auf ein Programm installieren beschränkt, meistens keine Probleme. 😉

    Zu deinem konkreten Problem:
    Du solltest die verwendete Library mit den Winsockfunktionen auch linken. Bei mingw war das AFAIK -lws2_32 oder -lwinsock



  • Sqwan schrieb:

    Ich bin auf der arbeit... Da habe ich kein VS und kanns auch nicht einfach installen...

    Dann beschwer dich bei der IT dass ihr veraltete IDEs und Compiler einsetzt 😉

    des weiteren strotzt dein Code von C-Relikten bzw. ist reiner C-Code
    Unter anderem sind die C-header stdio.h und stdlib.h im C++-Standard veraltet, das mindeste was du tun solltest ist die Verwendung der header <cstdio> und <cstdlib>, dort sind die selben Funktonen im namespace std vorhanden. (mal abgesehen davon dass ich keine Funktion aus stdlib sehe)
    Der nächste Punkt ist sprintf, was weder typsicher ist noch Schutz vor bufferoverflows bietet. Alternativen sind snprintf() als overflow-sichere C-Routine, stringstreams bzw. strstreams mit Typsicherheit bzw. boosts lexical_cast<> der den Stringstream wrapt.

    Was deine eigentliche Problemstellung angeht gibts Bibliotheken die C++-Schnittstellen für Netzwerkdinge bieten an Stelle der winsock C-API, z.B. boost::asio

    Zu guter letzt ist das Kexyword struct vor hostend in C++ überflüssig - allerdings ist das das letzte i-Tüpfelchen um aus deinem Code ein C-Programm zu machen. Du bist nicht zufälligerweise im falschen Forum gelandet oder?



  • ^^ ich glaube nicht, dass die mir hier ne Entwicklungsumgebung für c/cpp installieren. Wenn ich einen Webserver oder so brauche, dann sicher, aber wir arbeiten mit PHP und net mit c/cpp... Das brauche ich mehr oder weniger Privat...

    Was das linken angeht, kann man das denn bei Dev-C++ einstellen?

    EDIT: Leider bin ich nicht wirklich in der Lage C von Cpp zu unterscheiden.
    In der schule wurde uns sowas net gezeigt (War auch keine für cpp sondern eher für PHP)



  • Was das linken angeht, kann man das denn bei Dev-C++ einstellen?

    Ja.



  • gut... und ich habe es auch schon gefunden...
    einen fehler bekomme ich bis jetzt nicht...

    Wie kann ich denn den Stream jetzt auslesen?



  • Sqwan schrieb:

    Wie kann ich denn den Stream jetzt auslesen?

    mit recv(..) und am schluss clossocket(..) nicht vergessen...
    Simon



  • Also ich steige da echt nicht durch... Das ist echt kompliziert...
    Naja... Also ich denke das sind die Befehle ich dafür brauche:

    • SOCKET s;
    • char* url;
    • gethostbyname()
    • socket()
    • connect()
    • sprintf() <-- verwaltet? was ist besser?
    • send()
    • recv()

    Leider kann ich mir daraus aber nicht wirklich was bauen 😕
    Aber ich versuch mal nen anfang:

    class ReadSite
    {
        public:
        private:
            SOCKET s;
            char* url;
    
            void con2site()
            {
                s=socket(,,); //Hier sollte ich vllt prüfen ob es einen gibt, aber wie?
                connect(s,,); //Hier wäre es nicht schlecht die connection iwie su speichern
            }
    }
    

    Ich denke mal wenn nichtmal das klappt, wirds mit dem rest auch nichts...
    Leider kenne ich von den beiden Funktionen nicht die parameter...
    Vllt kann mir da jemand weiter helfen...



  • Sqwan schrieb:

    Vllt kann mir da jemand weiter helfen...

    Ich kenn mich da nicht so aus, aber 'n guter Freund von mir: www.gidf.de.



  • tolle sache... den Kenne ich auch...
    Spar die deine unqualifizierte Antwort und lösch hier deinen acc.
    Gibt ja eh alles bei google.



  • Such in der Doku der Socket Lib.
    Z.B. MSDN, da steht wir recv(..), send(..) etc. funktioniert.
    Hat manchmal auch Bsp. dabei...

    http://www.msdn.com



  • Sqwan schrieb:

    tolle sache... den Kenne ich auch...
    Spar die deine unqualifizierte Antwort und lösch hier deinen acc.
    Gibt ja eh alles bei google.

    Naja, so unqualifiziert war die Antwort gar nicht, denn wenn man die Socketprogrammierung ernsthaft und das bei einem gewissen Maß an Sicherheit, im Sinne von Security, betreiben will, dann sollte man sich fundierte Kenntnisse aneignen und nicht von einem Onlinetutorial zum nächsten übergehen. Damit gewinnt man keinen Blumentopf. Zumal es mit Grundkurs Socketprogrammierung mit C unter Linux einen super leichten Einstieg in die Materie gibt. Und sag jetzt nicht, dass du nicht Linux benutzt...mit drei Zeilen Code kannst du alle Beispiele aus dem Buch auch unter Windows ausführen.

    PS: Wenn es eh nur für den privaten Gebrauch gedacht ist, dann weiß ich nicht, wie dein Chef reagiert, wenn du sowas am Arbeitsplatz machst 😉



  • Ich habe nichtmal eine Verbindung. Und ich habe ein Beispiel:
    getpage.c
    Da gibbet dann nurnoch das Problem, dass ich das überhaupt nicht verstehe,
    was aber wichtig ist wenn ich eine Software neu/umgestalten bzw erweitern möchte.
    Deshalb wollte ich das Problem schritt für schritt angehen, und so wenig wie möglich mit Variablen hantieren und den schritt bei dem ich grade bin dann auch verstehen.

    Und wenn man was verstehen möchte ist msdn.de keine Doku sondern eine krankheit.
    PHP beispielsweise hat eine doku bei der sich msdn was abgucken könnte...



  • Sqwan schrieb:

    Da gibbet dann nurnoch das Problem, dass ich das überhaupt nicht verstehe, was aber wichtig ist wenn ich eine Software neu/umgestalten bzw erweitern möchte. Deshalb wollte ich das Problem schritt für schritt angehen, und so wenig wie möglich mit Variablen hantieren und den schritt bei dem ich grade bin dann auch verstehen.

    Wie weit ist es denn mit deinen Kenntnissen in C++ bzw. (da Sockets) in C her? Hast du keinen Schimmer von der Sprache selber oder von der Materie der Socketprogrammierung? Wenn ersteres, dann solltest du die Sprache, in der du arbeiten willst, erstmal grundsätzlich lernen und das geht nicht von jetzt auf gleich. Ist es letzteres, dann guck dir bitte mein vorletztes Posting bzw. das Buch, das ich dir dort empfehle, an.

    PS: Du könntest dein Vorhaben doch auch prima in PHP umsetzen



  • Und wenn man was verstehen möchte ist msdn.de keine Doku sondern eine krankheit.

    Denk, das liegt nicht an der Doku, sondern am leser.
    simon



  • In PHP? Da ist es möglich mich auf anderen seiten einzuloggen?
    c/cpp an für sich kann ich... Jedenfalls in der Console.



  • Sqwan schrieb:

    In PHP? Da ist es möglich mich auf anderen seiten einzuloggen?

    Ich stelle mir das in php gerade einfacher als in C/C++ vor.

    c/cpp an für sich kann ich... Jedenfalls in der Console.

    Na dann solltest du dir mal das von mir genannte Buch angucken...unter der Prämisse, dass du das wirklich etwas ernsthafter betreiben und nicht nur Codefragmente irgendwelcher Leute aus dem Internet zusammenklatschen willst.



  • 😕 aber das ist ja nicht meine seite. Was soll ich denn da machen?
    An den Inhalt nicht geschützter seiten komme ich ja leicht dran mit PHP.
    Aber das ich mich auf anderen seiten einloggen kann ohne sql-injections (kA ob das mit php geht) habe ich noch nicht gehört.

    @Berufspenner
    Sicher mag dein Buch nicht schlecht sein. Nur ist es mir zu teuer, wo ich den Umfang noch nicht kenne. Jenach dem wenn ich da mal nen anfang habe, werde ich mir das vllt durchlesen, und das ganz mit einer GUI versehen.



  • Sqwan schrieb:

    😕 aber das ist ja nicht meine seite. Was soll ich denn da machen?

    Wenn das PHP-Manual so gut ist, warum hast du's dann nicht benutzt um zu suchen was du brauchst? 🙄 Kennst du meinen Freund google schon? Damit hab ich folgendes z. B. sofort gefunden:

    http://www.php.net/CLI
    http://www.php.net/manual/en/ref.sockets.php



  • @Blue-Tiger
    Diesen service werden wohl die wenigsten webserver einem normalen user zu verfügung stellen. Und ich glaube nicht, dass sich das jeder @ home installiert...
    Aber egal... Wenn du mal durchgeschaut hast, fällt dir sofort auf, dass überall massig leicht zu verstehende Beispiele sind... Aber ich mag mich auch nicht drum kümmen welche doku nun besser ist, da wohl kaum jemand für mich die msdn ändert.

    so... nun back 2 topic... Ich habe nun soweit fertig was ich brauche... kann damit auch zu meinem Apache-Server connecten. Allerdings würde es mir nun helfen, wenn jemand ein kleines Beispiel zum ermitteln der IP-Adresse zu einer eingegeben url posten könnte. Da ist in dem Beispiel zwar ein fertiges, aber das verstehe ich garnicht. Schon alleine weil da so viel fehlerbehandlung drinne ist...

    EDIT: Die PHP-Manual gibbet auch auf gutem Deutsch



  • Soa... ready...
    Leider in C und ohne klasse... Jetzt hätte ich das aber gerne in einer klasse:

    class Lesen
    {
          public:
    
          long rc;
          SOCKET s;
          SOCKADDR_IN addr;
    
          void start_winsock()
          {
               this.rc=startWinsock();
    
               if(this.rc!=0)
               {
                     cout<<"Fehler: startWinsock, fehler code: "<<this.rc<<endl;
                     return 1;
               }
               else
               {
                     cout<<"Winsock gestartet!"<<endl;
               } 
          }      
    };
    

    dummerweise gibt das einen Fehler:
    z.B.: rc is not a type...

    Weiß jemand wie ich das ändern kann?
    OOP in C++ habe ich lange nimmer gemacht...
    Ich habe mich da mal ganz grob an java gehalten...
    Da dürfte es funktionieren...


Anmelden zum Antworten