Avatar billede allenb Nybegynder
06. december 2001 - 16:07 Der er 3 kommentarer og
1 løsning

Http utility

Er der nogen der ligger inde med noget c++ kode til at hente en html-side udfra en specificeret URL

Det ville være lækkert hvis det kunne kompileres under linux..... med g++ eller gcc

Avatar billede henrik_ffc Nybegynder
06. december 2001 - 16:16 #1
Denne kompilerer under linux !

#include <stdio.h>
#include <sys/socket.h>
#include <resolv.h>
void PANIC(char *msg) { perror(msg); exit(); }
int main(int Count, char *Strings[]) {
    int sockfd, bytes_read;
    struct sockaddr_in dest;
    char buffer[1024];
    if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 ) PANIC(\"Socket\");
    bzero(&dest, sizeof(dest));
    dest.sin_family = AF_INET;
    dest.sin_port = htons(80);
    if ( inet_aton(\"213.237.142.133\", &dest.sin_addr.s_addr) == 0 ) PANIC(Strings[1]);
    if ( connect(sockfd, &dest, sizeof(dest)) != 0 ) PANIC(\"Connect\");
    send(sockfd, \"GET / HTTP/1.0\\nConnection: close\\n\\n\", strlen(\"GET / HTTP/1.0\\nConnection: close\\n\\n\"), 0);
    do {
        bzero(buffer, sizeof(buffer));
        if (( bytes_read = recv(sockfd, buffer, sizeof(buffer), 0)) > 0 ) printf(\"%s\", buffer);
    } while ( bytes_read > 0 );
    return close(sockfd);
Avatar billede allenb Nybegynder
06. december 2001 - 17:39 #2
Hej Henrik,

tak for det hurtige svar, mangler der noget af koden, får en del fejl i kompileringen, hvilken kompiler skal bruges...

Koden skal anvendes som et del-element til en scanner. Hvordan eksekveres fra anden c++ og hvordan aflæses data (HTML) der kommer retur ?
Avatar billede henrik_ffc Nybegynder
06. december 2001 - 21:47 #3
Jeg kompilerer den med
gcc http.c -o http ; strip http
(gcc version 3.0.1)
Det resulterer i en \"http\" fil på 4k der henter en html side og viser koden på skærmen.


Det er
do {
        bzero(buffer, sizeof(buffer));
        if (( bytes_read = recv(sockfd, buffer, sizeof(buffer), 0)) > 0 ) printf(\"%s\", buffer);
    } while ( bytes_read > 0 );

der \'tager imod\'.

recv() henter data fra socket og lægge dem over i \'buffer\'.
I eksemplet bliver denne buffer bare skrevet ud på skærmen, men
du kan selv gemme informationerne og bearbejde dem, som du nu
måtte ønske...

Jeg indrømmer at koden er meget kompakt og grim, men jeg ville se om jeg kunne lave en fuld
\'kodeviser\' / browser på 20 linier. Det kunne jeg :-)
Avatar billede allenb Nybegynder
11. december 2001 - 17:59 #4
Tak for hjælpen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester