1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[c] obter txt da internet

Discussão em 'Programação' iniciada por vorenus, 27 de Fevereiro de 2008. (Respostas: 6; Visualizações: 682)

  1. vorenus

    vorenus Power Member

    bem... tenho um programa que vai abrir um txt com mensagens,

    o que eu queria era, que esse txt se encontra-se na internet...

    é possivel fazer isso...

    ou seja, abrir por exemplo http://site.pt/msg.txt ???
     
  2. PF_PLAYER

    PF_PLAYER Power Member

    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.
     
  3. reise

    reise Power Member

    Que linguagem de programação?
     
  4. Aparicio

    Aparicio /dev/mod
    Staff Member

    Ele não perguntou onde alojar mas como aceder ao ficheiro num programa.
    Título da thread: [c] obter txt da internet


    Deves ter que utilizar sockets penso eu.
     
  5. IcePicK

    IcePicK Power Member

    É arranjares uma biblioteca que te permita fazer pedidos HTTP. Depois é API!
     
  6. reise

    reise Power Member

    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! :)
     
  7. vorenus

    vorenus Power Member

    obrigado...
    ajudaram bastante :)
     

Partilhar esta Página