[c] obter txt da internet

se não o queres colocar na tua própria página e apenas o queres colocar na net para que mais pessoas o possam sacar, podes o colocar num site de armazenamento de ficheiros grátis, tipo http://www.megaupload.com/pt/ ou http://www.hdd.pt/ por exemplo.
Ele não perguntou onde alojar mas como aceder ao ficheiro num programa.
Que linguagem de programação?
Título da thread: [c] obter txt da internet


Deves ter que utilizar sockets penso eu.
 
Não tinha reparado no [c]!

Basicamente tens de simular uma chamada http usando sockets.

Código:
/*
** client.c -- a stream socket client demo
*/

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

#define PORT 80 // Porta 80 que é a default para WWW
#define SERVER "www.myserver.com" // servidor aonde está alojado o ficheiro 

#define MAXDATASIZE 100 // max number of bytes we can get at once 

int main(int argc, char *argv[])
{
    int sockfd, numbytes;  
    char buf[MAXDATASIZE];
    struct hostent *he;
    struct sockaddr_in their_addr; // connector's address information 

    if ((he=gethostbyname(SERVER)) == NULL) {  // get the host info 
        herror("gethostbyname");
        exit(1);
    }

    if ((sockfd = socket(PF_INET, SOCK_STREAM, 0)) == -1) {
        perror("socket");
        exit(1);
    }

    their_addr.sin_family = AF_INET;    // host byte order 
    their_addr.sin_port = htons(PORT);  // short, network byte order 
    their_addr.sin_addr = *((struct in_addr *)he->h_addr);
    memset(their_addr.sin_zero, '\0', sizeof their_addr.sin_zero);

    if (connect(sockfd, (struct sockaddr *)&their_addr,
                                          sizeof their_addr) == -1) {
        perror("connect");
        exit(1);
    }

    // aqui vais ter de fazer um pedido HTTP
    // qq coisa como get /ficheiro.txt HTTP/1.1

    //aqui lês bytes do socket para o buf e fazes o parse da resposta
    if ((numbytes=recv(sockfd, buf, MAXDATASIZE-1, 0)) == -1) {
        perror("recv");
        exit(1);
    }

    buf[numbytes] = '\0';

    printf("Received: %s",buf);

    close(sockfd);

    return 0;
}
Exemplo tirado deste tutorial
Exemplo de como usar http usando a linha de comando aqui

Espero não ter sido muito complicado! :)
 
Back
Topo