Avatar billede max33 Nybegynder
20. februar 2012 - 21:29 Der er 4 kommentarer og
1 løsning

sock program til at kalde hjemmeside adresse

System: Centos6 som kører på vmware under windows xp

Har fundet dette program, og kunne godt tænke mig at bruge det til at slå en bestemt hjemmeside adresse op, 1 gang hvert minut.

Men kan ikke helt få det til at fungere.

Selve programmet:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>

void error(const char *msg)
{
    perror(msg);
    exit(0);
}

int main(int argc, char *argv[])
{
    int sockfd, portno, n;
    struct sockaddr_in serv_addr;
    struct hostent *server;

    char buffer[256];
/*    if (argc < 3) {
      fprintf(stderr,"usage %s hostname port\n", argv[0]);
      exit(0);
    }
*/
    portno = 80; // atoi(argv[2]);
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd < 0)
        error("ERROR opening socket");
    server = gethostbyname("google.dk"); // (argv[1]);
    if (server == NULL) {
        fprintf(stderr,"ERROR, no such host\n");
        exit(0);
    }
    bzero((char *) &serv_addr, sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;
    bcopy((char *)server->h_addr,
        (char *)&serv_addr.sin_addr.s_addr,
        server->h_length);
    serv_addr.sin_port = htons(portno);
    if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0)
        error("ERROR connecting");
    printf("Please enter the message: ");
    bzero(buffer,256);
    fgets(buffer,255,stdin);
    printf("%s\n", buffer);
    n = write(sockfd,buffer,strlen(buffer));
    if (n < 0)
        error("ERROR writing to socket");
    printf("Sendt");
    bzero(buffer,256);
    n = read(sockfd,buffer,255);
    if (n < 0)
        error("ERROR reading from socket");
    printf("%s\n",buffer);
    close(sockfd);
    return 0;
}

Fejlen kommer når har indtaste det jeg vil sende til serveren.

f.eks.: GET index.php http/1.1\n Host:google.dk\n\n\n
eller andet med: GET/POST XXX
Så låser den i write funktionen.

skriver jeg f.eks: google.dk
svare den:
-------------------
SendtHTTP/1.0 400 Bad Request

Content-Type: text/html; charset=UTF-8

Content-Length: 925

Date: Mon, 20 Feb 2012 20:22:58 GMT

Server: GFE/2.0



<!DOCTYPE html>
<html lang=en>
  <meta charset=utf-8>
  <meta name=viewport content="initial-scale=1, minimum-sc
-----------------------
stopper så her hvor bufferen nok er fuld (256 char)
Ved ikke om det er min egen computer der svare eller google. (har prøvet til flere domæner hvor svaret var det samme så det er nok min egen computer der svare)


Hvad skal jeg skrive for at den henter siden?
Eller er der en som har noget kode der kan bruges?
Avatar billede arne_v Ekspert
21. februar 2012 - 02:05 #1
Indtaster du \n som fgets input?

Det virker ikke ligesom \n i C source code!
Avatar billede max33 Nybegynder
21. februar 2012 - 13:47 #2
ja det gør jeg, hvordan skal jeg så taste det ?
Avatar billede arne_v Ekspert
21. februar 2012 - 15:11 #3
flere fgets kald indtil eof faar den til at fejle
Avatar billede max33 Nybegynder
29. februar 2012 - 12:09 #4
Så kører det.

Smider du et svar?
Avatar billede arne_v Ekspert
29. februar 2012 - 14:30 #5
kommer her
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