kostenloser Webspace werbefrei: lima-city


HTTP mit C++

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    toolz

    Kostenloser Webspace von toolz

    toolz hat kostenlosen Webspace.

    Hi.

    Vorab:
    Ich habe wenig tag/erfahrung">Erfahrung mit C++.

    Wie kann ich (mit Code am Besten) ein Programm schreiben, das auf das Internet zugreift. Es soll kein Browser werden, das Auslesen des HTML- Codes genügt.
    Noch besser, wenn jemand einen Code für BlitzBasic wüsste, wobei ich befürchte, dass es da nicht geht. Ansonsten C++.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Guten Abend,

    Such mal nach Sockets, das is wohl die einfachste Möglichkeit, funktioniert auch in BlitzBasic. Dann noch nen einfacher GET befehl, wenns keine schwierigen zugriffe gibt, und das wars.
    Googlen darfst du selbst :)

    -AlienDwarf
  4. d***********a

    Zum lernen, wie Sockets funzen: http://www.c-worker.ch/tuts/wstut_op.php

    Einfach super die Seite.
    Das ganze bezieht sich zwar nicht auf HTTP, allerdings ist der Aufbau ja ähnlich.
    Du musst halt blos noch die passenden Befehle schicken und wirst deine gewünschte Antwort vom Server bekommen.

    Hier hab ich im übrigen einen Quellcode, den ich mal geschrieben hab. Lässt sich sicher optimiern, aber scheint zu funzen:

    #include <stdio.h>
    
    //#include <process.h>
    #include <winsock2.h>
    
    using namespace std;
    
    // --- Globale Variablen ---
    char Nummer[20];
    // -------------------------
    
    int Beenden(SOCKET Socket,int Fehler) // Entfernt das Socket und stoppt Winsock, falls nötig
    {
       
       if (Fehler > 2)
       {
          printf("Trenne Verbindung ... ");
          // !?
          printf("okay\n");
       }
       if (Fehler > 1)
       {
          printf("Entferne Socket ... ");
          closesocket(Socket);
          printf("okay\n");
       }
       if (Fehler > 0)
       {
          printf("Stoppe Winsock ... ");
          WSACleanup();
          printf("okay\n");
       }
       printf("Ende ...\n");
       exit(Fehler);
       return Fehler;
    }
    
    SOCKET Verbinden() // Winsock starten, Socket erstellen ...
    {
       bool Fehler = false;
       long rc;
       WSADATA wsa;
       SOCKET Socket;
       printf("Starte Winsock ... ");
       rc = WSAStartup(MAKEWORD(2,0),&wsa);
       if(rc!=0)
       {
          printf("Fehler: %d\n",rc);
          Beenden(NULL,0);
          return 0;
       }
       else
       {
          printf("okay\n");
       }
       
       printf("Erstelle Socket ... ");
     
       Socket = socket(AF_INET,SOCK_STREAM,0);
       if(Socket==INVALID_SOCKET)
       {
          printf("Fehler: %d\n",WSAGetLastError());
          Beenden(NULL,1);
          return 0;
       }
       else
       {
          printf("okay\n");
       }
    
       SOCKADDR_IN addr;
       memset(&addr,0,sizeof(SOCKADDR_IN));
       
       addr.sin_family=AF_INET;
       addr.sin_port=htons(80);
       
       hostent* server = gethostbyname("dapizzafressa.lima-city.de");
       
       char serverip[20] = {0};
       sprintf(serverip, "%u.%u.%u.%u",(unsigned char) server->h_addr_list[0][0],(unsigned char) server->h_addr_list[0][1],(unsigned char) server->h_addr_list[0][2], (unsigned char) server->h_addr_list[0][3]);
       addr.sin_addr.s_addr=inet_addr(serverip);
    
       printf("Verbinde zu Server ... ");
       
       rc=connect(Socket,(SOCKADDR*)&addr,sizeof(SOCKADDR));
    
       if(rc==SOCKET_ERROR)
       {
          printf("Fehler: %d\n",WSAGetLastError());
          Beenden(Socket,2);
          return 0;
       }
       else
       {
          return Socket;
       }
    }
    
    int main(int argc, char *argv[])
    {
       SOCKET Socket = Verbinden();
       
       if (Socket != 0)
       {
       printf("okay\n\n");
       printf("Starte Kommunikation ...\n\n");
    
       Sleep(2);
       
       char join[] = "GET http://dapizzafressa.lima-city.de/index.php HTTP/1.1\nHost: dapizzafressa.lima-city.de\n\n";
       
       //GET http://target/index.php HTTP/1.1
       send(Socket,join,sizeof(join)+1,0);
       
       char text[10000];
       int x = 0;
       
       while(1)
       {
          memset(&text,0,sizeof(text));
          x = recv((SOCKET)Socket,text,10000,0);
          if(x > 0)
          {
             printf(text);
          }
          Sleep(10);
       }
    
       } else {return 0;}
       Beenden(Socket,3);
       return 0;
    }


    mfg dapizzafressa

    PS: Hab als Compiler MinGW
    PSS: Wunder dich nicht über möglicherweise ungenutzte oder komisch benannte Variablen, ich hab mit dem Code alles mögliche ausprobiert.

    Beitrag geändert: 20.12.2008 23:33:45 von dapizzafressa
  5. Dapizzafresser, es gibt ein code-Tag (Oder geht der nicht?)

    @toolz: Geh mal auf blitzforum.de und such dort mal, dort gibt es einige Tuts dazu. Es geht mit BlitzBasic, und ist sogar relativ einfach.
  6. d***********a

    mergener, gut dass du schlau daherredest, allerdings hab ich das ganze in das code-Tag gepackt, man sieht in der neuen LC-Version nichts davon.

    Schau genau hin, du siehst in meinem Quellcode _KEINEN_ Smiley.

    Grüße dapizzafressa
  7. Autor dieses Themas

    toolz

    Kostenloser Webspace von toolz

    toolz hat kostenlosen Webspace.

    Mit BlitzBasic kann man, so weit ich weiß keine Internetseiten aufrufen und im "blitzforum.de" hab ich auch nichts entsprechendes gefunden.

    dapizzafresser, danke für den Code, aber ich blick da nicht durch. Mein C++ sagt da wären Fehler...

    Ich möchte einen Code, der mir den Inhalt einer Internetseite ausgibt, allerdings nicht in der Form, wie Browser das tun, sondern einfach der blanke HTML- Code soll ausgegeben werden.
  8. d***********a

    Mein Code würde den HTML Code der Seite ausgeben.
    Welchen Compiler verwendest du denn?
    Da sind nämlich oft kleinere Unterschiede. Ich verwend MinGW [http://mingw.sourceforge.net/]
    Aus Erfahrung von Freunden funktionieren Codes, die in VC++ laufen unter MinGW nicht und andersrum.

    Grüße dapizzafressa
  9. Nebenbei würde ich fragen, ob du auch die erforderlichen Libs usw. gelinkt und verfügbar hast.
    Dann könntest du uns die Fehlermeldungen mal zeigen. Die geben sehr oft Aufschluss über die eignetliche Fehlerquelle.
  10. Autor dieses Themas

    toolz

    Kostenloser Webspace von toolz

    toolz hat kostenlosen Webspace.

    Stimmt, an den Libs könnte es liegen, hier ein Screen der Fehlermeldungen, die anderen Meldungen sind nur Warnings...
  11. kochmarkus

    Co-Admin Kostenloser Webspace von kochmarkus

    kochmarkus hat kostenlosen Webspace.


    Stimmt, an den Libs könnte es liegen, hier ein Screen der Fehlermeldungen, die anderen Meldungen sind nur Warnings...



    Sieht für mich so aus, als ob du nicht gegen die ws2_32.lib gelinkt hast, so wie es auf http://www.c-worker.ch/tuts/wstut_op.php steht:

    Das Progamm muss gegen ws2_32.lib gelinkt werden. Falls man Visual Studio verwendet muss man bei den Projekteigenschaften unter Linker ws2_32.lib zu den Libraries hinzufügen.
    Eventuell schafft aber auch folgende Zeile am Anfang des Quellcodes Abhilfe: #pragma comment( lib, "ws2_32.lib" )

  12. d***********a

    Bei MinGW musst du die libws2_32.a mitlinken.

    Grüße dapizzafressa

    PS: Welchen Compiler verwendest du denn? ;D
  13. Autor dieses Themas

    toolz

    Kostenloser Webspace von toolz

    toolz hat kostenlosen Webspace.

    Ich arbeite mit Dev-C++...


    Funktioniert jetzt!

    Danke für die Hilfe an Alle. :thumb:
  14. @toolz:
    Dann behaupte ich, dass du nicht gesucht hast.
    http://phpprogger.ph.funpic.de/tuts/Webcrawler.doc
    http://www.blitzforum.de/forum/viewtopic.php?t=19274
    http://www.blitzforum.de/forum/viewtopic.php?t=29105
    (Ich hör mal hier auf, durch die Querverweise kommst du zu NOCH mehr Stuff zu dem Thema, unter anderem das Ofenrohr-Tut, das dich darein bringt)

    Zwar eher unnötig, aber für sehr kompexe Sachen schön:
    http://www.blitzforum.de/forum/viewtopic.php?t=14140

    @dapizzafresser:
    Du brauchst mich nicht anzufahren. Ich hab extra nachgefragt, ob dieser Code-Tag nicht funzt!
  15. d***********a

    Es lag nicht in meiner Intention, dich anzufahren, mergener, und falls es so "rübergekommen" ist, entschuldige ich mich dafür.
  16. Problem gelöst.
    Bevor hier weiter rumgespammt wird mach ich dicht.

    An den Threadersteller:
    Das näcshte mal such mal ein wenig. Diese Fehlermeldung findet man nach wenigen Minuten wenn nicht gar Sekunden googlen.
  17. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!