Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841

    [c] richiesta pagina http

    questo codice prima richiede una pagina dal mio sito, poi prova a scaricare un filmato di megavideo... altervista mi risponde perfettamente, mentre megavideo non si fa sentire... sto impazzendo...

    grazie mille per l'aiuto

    codice:
    #include <stdio.h> 
    #include <winsock.h> 
    #include <stdlib.h>
    #include <string.h>
    bool scarica(char *fileremoto,char *filelocale,char *host,char modalita);
    
    int main(int argc, char *argv[]){
    
        scarica("/forum2/","a.txt","www.mamo139.altervista.org",'1');
        scarica("/files/4ce85b10a5de4f47ea02d653021d0b42/","a.txt","www785.megavideo.com",'1');
    
        getchar();
    
    }	
    	
    bool scarica(char *fileremoto,char *filelocale,char *host,char modalita){
    	FILE *fo; 
    	struct sockaddr_in sock; 		//la struttura per il socket
    	struct hostent ip; 		        //la struttura per l'indirizzo 
    	bool header = true;
    	bool invio = false;
    	char ultimo_carattere = '\0';
    
    	char msg_response[] = "\0";
    	char modo[4];
    	int s;
    		
        //messaggio per il server...
        char msg_enter[600] = "GET ";
    	char protocollo[] = " HTTP/1.1\n"; 
    	char protocollo2[] = "Host: "; 
    	char protocollo3[] = "\n"; 
    	
    	char dettagli1[] = "Keep-Alive: 300\n";  
    	char dettagli2[] = "Connection: keep-alive";  
    	
       	strcat(msg_enter,fileremoto); 
       	strcat(msg_enter,protocollo); 
        strcat(msg_enter,protocollo2); 
       	strcat(msg_enter,host); 
        strcat(msg_enter,protocollo3); 
       	
       	//strcat(msg_enter,dettagli1); //header
    	//strcat(msg_enter,dettagli2);
    
       	strcat(msg_enter,"\n\n"); 
    
    	strcpy(modo,(modalita == '1' ? "w+b" : "w"));
        fo=fopen(filelocale,modo); //creazione file
    
        //********* connessione *********//
       	WORD wVersion; 
    	WSADATA wsaData;
    	wVersion = MAKEWORD(2, 2);
    	WSAStartup(wVersion, &wsaData); //winsock startup
    	s = socket(AF_INET, SOCK_STREAM, 0);
    	
    	ip = *(gethostbyname(host)); //indirizzo
    	memcpy(&sock.sin_addr, ip.h_addr, ip.h_length); //copia l'indirizzo nella struttura socket
    	sock.sin_family = AF_INET; 
    	sock.sin_port = htons(80); //porta
    
    	
    	connect(s, (struct sockaddr *)&sock, sizeof(sock)); //associa al socket s la struttura socket
    	if (!s) {
     		printf("Connessione non riuscita!!");
     		getchar();
     		return false;
     	}	
            
        printf("Inviato al server:\n\n%s\n", msg_enter); 
    	send(s, msg_enter, strlen(msg_enter) + 1, 0); //invia dati
    	printf("Download in corso...\n\n");
            
        while(recv(s, msg_response, 1, 0) != 0) { 
     
        	// se sono finiti gli header stampa nel file
            if (!header) fprintf(fo,"%c",msg_response[0]);  
            else printf("%c",msg_response[0]);
            
            // se l'ultimo carattere è uguale a \r, quello attuale è uguale a \n
       		// e prima c'era già stato un invio (invio==true), mette header=false
            if (ultimo_carattere == 13 && msg_response[0] == 10 && invio==true) header=false;
        	// ulteriore controllo sugli header
            ((ultimo_carattere == 13 && msg_response[0] == 10) || (ultimo_carattere==10 && invio))?invio=true:invio=false;  
            // memorizza l'ultimo carattere                                                                                       	
            ultimo_carattere = msg_response[0];
    
            //fprintf(fo,"%c",msg_response[0]); 
        }
        
    	printf("File Ricevuto\n");
    	
    	//operazioni di chiusura!
    	shutdown(s, 2);
    	closesocket(s);
    	WSACleanup();
    	fclose(fo);
    	return true;
    }

  2. #2
    Ma al di là del metodo che hai usato per scaricare i file (la API UrlDownloadToFile è molto più immediata), anche navigando con un normale browser su http://www785.megavideo.com/files/4c...2d653021d0b42/ si ottiene una pagina vuota.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    Originariamente inviato da MItaly
    Ma al di là del metodo che hai usato per scaricare i file (la API UrlDownloadToFile è molto più immediata), anche navigando con un normale browser su http://www785.megavideo.com/files/4c...2d653021d0b42/ si ottiene una pagina vuota.
    che strano
    se io clicco sul link che mi hai postato tu mi parte il download di un file di circa 450 megabyte
    deve essere perche i link sono soggettivi e collegati all'ip

    e comunque se è come dici tu in ogni caso megavideo dovrebbe mandarmi almeno una risposta di errore, e invece sta muto...

    precisamente con firefox mi risponde
    HTTP/1.x 403 Forbidden
    Server: Apache/1.3.37 (Debian GNU/Linux) PHP/4.4.7

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Beh ... mi sembra evidente

    HTTP/1.x 403 Forbidden

    che c'e' un problema di autenticazione o di permessi ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    Originariamente inviato da oregon
    Beh ... mi sembra evidente

    HTTP/1.x 403 Forbidden

    che c'e' un problema di autenticazione o di permessi ...
    esatto, però se mi connetto con firefox il server mi risponde HTTP/1.x 403 Forbidden
    se mi connetto con il mio programma sta muto... questo è il mio problema


    ps: per i permessi è soggettivo perche con il mio ip quel link funziona mi voglio concetrare sul problema che megavideo non risponde con un HTTP/1.x 403 Forbidden al mio programma!

  6. #6
    Originariamente inviato da mamo139
    ps: per i permessi è soggettivo perche con il mio ip quel link funziona
    Secondo me è perché in Firefox hai fatto qualche altra cosa sul sito in questione (tipo sei passato attraverso pagine di pubblicità o altro) che ha lasciato un qualche cookie che ti consente ora di scaricare il video.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    E poi, sicuro che vuoi scaricare una pagina http ?

    O e' un file video ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    Originariamente inviato da oregon
    E poi, sicuro che vuoi scaricare una pagina http ?

    O e' un file video ?
    si voglio scaricare un file video... ma la richiesta in protocollo http non è uguale??

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Non e' detto.

    Dipende dal sito, essendo il contenuto video sottoposto a diritti d'autore, potrebbe essere inviato con altri protocolli e in forma limitata.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    Originariamente inviato da oregon
    Non e' detto.

    Dipende dal sito, essendo il contenuto video sottoposto a diritti d'autore, potrebbe essere inviato con altri protocolli e in forma limitata.
    l'ho provato con firefox... invio gli stessi header che invio con il mio programma e lui riceve risposta e io no... l'unica che mi viene in mente è che io ho sbagliato da qualche parte la sintassi del protocollo http...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.