|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
[c++] ifstream di un file su internet
E' possibile leggere un file da internet con l'ifstream?
C'è una possibilità remota che il dos possa collegarsi a internet? del tipo ifstream file("http://www.ciao.com/ciao.txt") ? fermatemi se sto dicendo un'assurdità |
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
|
no, un ifstream non va bene (a meno di non avere un S.O. che permette di vedere nativamente indirizzi web come percorsi nel file system).
Ci sono pero' delle librerie che permettono di ottenere un generico per un socket e probabilmente pure per una sessione http. Prova a controllare con google. |
|
|
|
|
|
#3 | ||
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
Quote:
Quote:
|
||
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
se fosse in windows sarebbe più semplice o lo stesso?
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Lo stesso... Ma il tuo preblema è fare una sessine HTTP ? Su Windows trasferire un file HTTP è facilissimo con la API giusta...
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
in realtà devo farlo semplicemente leggere dal programma (cioè senza che io possa vedere dove l'ha preso)
cmq se non si può in dos o è troppo complicato lascio perdere, non è strettamente necessario |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Con le API InternetOpen, InternetOpenUrl, InternetReadFile e InternetCloseHandle fai un batter d'occhio...
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
non sono api per windows? il mio prog è in dos
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Dos o console di testo ? Se è un programma a 32 bit per la console di testo puoi usare le API...
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
Quote:
|
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Che compilatore usi ?
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
dev-c++
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Allora non fai programmi in DOS, ma li fai per Windows, anche se sono in testo... Quindi puoi tranquillamente usare quelle API... Vai su http://msdn.microsoft.com per cercare la documentazione di quelle API...
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
bof nn capisco cosa ha di sbagliato sto codice... mi dà un po' di errori
devo dire che non ho mai usato api o handle vari, soprattutto integrati in un file per console di testo Codice:
#include <iostream>
HINTERNET hFile, hNet;
DWORD dwBytesRead = 0;
char buffer[10*1024];
BOOL bRead;
hNet = InternetOpen(
"Microsoft Internet Explorer",
INTERNET_OPEN_TYPE_PRECONFIG,
NULL,
NULL,
0
);
if (hNet == NULL)
{
cout<<"Devi connetterti a internet"<<endl;
return 0;
}
hFile = InternetOpenUrl(
hNet,
"http://xmax.altervista.org/tictac.txt",
NULL,
0,
INTERNET_FLAG_RELOAD,
0
);
if (hFile == NULL)
{
cout<<"Non ho trovato il file, chiudo"<<endl;
return 0;
}
bRead = InternetReadFile(
hFile,
buffer,
sizeof(buffer),
&dwBytesRead
);
if (bRead == TRUE)
{
cout<<"File ricevuto, elaboro le domande";
................
}
else
{
cout<<"File vuoto, riprova";
return 0;
}
InternetCloseHandle(hNet);
InternetCloseHandle(hFile);
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Devi includer windows.h e Wininet.h...poi devi linkare al tuo eseguibile libwininet.a
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
ahhhhhhhhhhhh mi fa venire il mal di testa
mi dice che sto traformando il void* di HINTERNET hNet in int mi fai vedere un esempio veloce veloce? non ho trovato esempi e nn ci sto capendo niente |
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Il tuo codice dovrebbe andre bene... Nnon so il perchè di questi errori...
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Guarda...non ho messo mano al codice e funziona perfettamente
Codice:
#include <iostream>
#include <windows.h>
#include <wininet.h>
using namespace std;
int main()
{
HINTERNET hFile, hNet;
DWORD dwBytesRead = 0;
char buffer[10*1024];
BOOL bRead;
hNet = InternetOpen(
"Microsoft Internet Explorer",
INTERNET_OPEN_TYPE_PRECONFIG,
NULL,
NULL,
0
);
if (hNet == NULL)
{
cout<<"Devi connetterti a internet"<<endl;
return 0;
}
hFile = InternetOpenUrl(
hNet,
"http://forum.hwupgrade.it/images/smilies/icon_wink.gif",
NULL,
0,
INTERNET_FLAG_RELOAD,
0
);
if (hFile == NULL)
{
cout<<"Non ho trovato il file, chiudo"<<endl;
return 0;
}
bRead = InternetReadFile(
hFile,
buffer,
sizeof(buffer),
&dwBytesRead
);
if (bRead == TRUE)
{
cout<<"File ricevuto, elaboro le domande";
}
else
{
cout<<"File vuoto, riprova";
return 0;
}
InternetCloseHandle(hNet);
InternetCloseHandle(hFile);
return 1;
}
|
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
te lo compila? a me dà errore
[Linker error] undefined reference to `InternetOpenA@20' [Linker error] undefined reference to `InternetOpenUrlA@24' [Linker error] undefined reference to `InternetReadFile@16' [Linker error] undefined reference to `InternetCloseHandle@4' [Linker error] undefined reference to `InternetCloseHandle@4' questo è il log completo degli errori C:\WINDOWS\TEMP/ccs2obeb.o(.text+0x119):connessione internet.cpp: undefined reference to `InternetOpenA@20' C:\WINDOWS\TEMP/ccs2obeb.o(.text+0x175):connessione internet.cpp: undefined reference to `InternetOpenUrlA@24' C:\WINDOWS\TEMP/ccs2obeb.o(.text+0x1ce):connessione internet.cpp: undefined reference to `InternetReadFile@16' C:\WINDOWS\TEMP/ccs2obeb.o(.text+0x220):connessione internet.cpp: undefined reference to `InternetCloseHandle@4' C:\WINDOWS\TEMP/ccs2obeb.o(.text+0x22e):connessione internet.cpp: undefined reference to `InternetCloseHandle@4' eppure l'ho copiato pari pari al tuo, il wininet.h c'è... è come se nn vedesse il file che gli ho detto di includere
|
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
il bello è che se gli dò altri errori del tipo tolgo using namespace std non li trova sti benedetti errori di linker! che sia il compilatore?
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:09.



















