Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    487

    [C++] Inviare...socket(?) a pagna PHP

    Ciao ragazzi....dovrei faer in modo di inviare un socket ad una pagina PHP....diciamo che io di PHP non me ne intendo molto ma un amico che lo conosce mi ha detto che se io per esempio scrivo in google http://www.qualcosa.it/pagina?sd=ciao+bello e mi ha spiegato un mio amico quella pagina è predisposta per memorizzare la stringa in un database si ppuòp comunicare con la pagina.

    Inizialmente, e banalmente xD, avevo pensato ad una shellexecute con parametro SW_HIDE..ma lui mi ha spiegato che esistono metodi migliori...in teoria con winsock2....

    le domande sono 2:

    1) Sono i socket quelli che svolgono questo lavoro?
    2) Ho letto un beol pezzo di documentazione qui e la trovo mooooolto difficile....insomma ci capisco poco niente devo ancora capire se esiste una benedetta funzione che si "collega" con un url...appunto http://www.qualcosa.it/pagina e gli invia il socket con dentro la stringa "ciao bello".

    Semlicemente aiuto

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Dire che non si è capito nulla è un eufemismo...

    Cerca di spiegare esattamente cosa vuoi fare, ma cerca di spiegarlo con parole tue, non con quelle del tuo amico che, a quanto mi pare di capire, ha le idee ancora più confuse di te.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Se vuoi fare delle semplici richieste HTTP lascia stare i socket e usa direttamente una libreria come libcurl (multipiattaforma) o WinHTTP (solo per Windows).
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    487

    si

    si ammento che non ho molto le idee chiare....dopo do un occchio alle due libreire e ti so dire

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    487

    ok ragazzi...mi sono schiarito le idee :) :)

    ragazzi ora ho le idee chiare riguardo questo argomento....ci ho messo un po' xD
    se per esempio voglio scaricare il sorgente pagina di www.google.it uso queste due funzioni:

    codice:
    int writer(char *data, std::size_t size, std::size_t nmemb, std::string *buffer)  {  int result = 0;   if (buffer != NULL) {   buffer->append(data, size * nmemb);   result = size * nmemb;  }  return result; }   std::string curlHttpget(const std::string &url)  { std::string buffer;  CURL *curl; CURLcode result;  curl = curl_easy_init();   if (curl) {   curl_easy_setopt(curl, CURLOPT_URL, url.c_str());   curl_easy_setopt(curl, CURLOPT_HEADER, 0);   curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);   curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);    result = curl_easy_perform(curl);//http get performed    curl_easy_cleanup(curl);//must cleanup    //error codes: http://curl.haxx.se/libcurl/c/libcurl-errors.html   if (result == CURLE_OK) {    return buffer;   }   //curl_easy_strerror was added in libcurl 7.12.0   //std::cerr << "error: " << result << " " << curl_easy_strerror(result) << std::endl;   return "";  }  }
    il mio problema è che vorrei avere una API win32 che mi scarichi il sorgente di una pagina web, non voglio dipendere da varie librerie...il titolo...cioè che voglio usare i socket non c'entra niente...ho capito che ho bisogno solamente di un'API che scarichi il sorgente pagina

  6. #6
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    487

    allora...

    ho provato con questa funzione, ricavata dal link che mi hai dato...

    codice:
    string GetHttp(string indirizzo)
    {
    
    	IStream * is;
    	char buffer[256];
    
    	if(URLOpenBlockingStream(NULL,indirizzo.c_str(),&is,0,NULL)!=S_OK)
    	{
    		cerr<<"Impossibile effettuare il download del file.";
    	}
    	else
    	{
    		ULONG readBytes;
    		while(is->Read(buffer,sizeof(buffer),&readBytes)==S_OK)
    		{
    			cout.write(buffer,readBytes);
    		}
    		is->Release();
    	}
    	return 0;
    }
    Ma non va niente...si mi da errore: cerr<<"Impossibile effettuare il download del file.";!

    ho provato a scaricare: "www.google.it/search?q=asd"

  8. #8
    Lascia stare i cout e i cerr (che lì erano solo per visualizzare la roba), al posto di cerr dovrai sollevare un'eccezione di tipo adeguato, invece dei cout dovrai aggiungere caratteri in coda alla stringa che andrai a restituire.
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    487

    mmm

    si lo so -.- ..è solo un esempio quello che voglio dire è che non mi riesce a scaricare la pagina

  10. #10
    codice:
    std::string GetHttp(std::string indirizzo)
    {
    	IStream * is;
    	char buffer[256];
    	std::string ret;
    
    	if(URLOpenBlockingStream(NULL,indirizzo.c_str(),&is,0,NULL)!=S_OK)
    		throw std::runtime_error("Impossibile effettuare il download del file.");
    	else
    	{
    		ULONG readBytes;
    		while(is->Read(buffer,sizeof(buffer),&readBytes)==S_OK)
    			ret.append(buffer, readBytes);
    		is->Release();
    	}
    	return ret;
    }
    Amaro C++, il gusto pieno dell'undefined behavior.

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.