Lire un fichier via HTTP

Signaler
Messages postés
26
Date d'inscription
samedi 3 juillet 2004
Statut
Membre
Dernière intervention
18 août 2004
-
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
-
Bonjour,
je programme en C et je sais ouvrir/lire/écrire un fichier grâce à fopen() sur mon disque dur. :) Mais là, je veux faire exactement pareil sauf que le fichier se trouverai sur le NET. :-p Donc j'ai tapé ça:
<=======>
#include <stdio.h>
#include <stdlib.h>

main(){
FILE *fp;
char saisie[40] = "http://yugiohjcj.free.fr/NEO_compte.cpt\0";
if((fp fopen(saisie, "r")) NULL){
printf("\adresse incorrect!"); }//Fin de la boucle if((fp fopen(saisie, "r")) NULL)
if((fp = fopen(saisie, "r")) != NULL){
printf("OK!");
}//Fin de la boucle if((fp = fopen(saisie, "r")) != NULL)

}//Fin de la boucle main()
<=======>
Mais ça marche pas :sad) , on ne peut pas taper une URL. Il faut - parait-il - ouvrir ce qui s'appelle un "socket" :question) (j'ai lu ça dans les forums). Pouvez-vous me réécrire une source qui fonctionnerai avec mon exemple. Merci 8-) . (je fais un jeu en C sous Windows qui fonctionne sur internet)

5 réponses

Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
Bonjour,

Tu peux regarder tu cotes de WININET notament se qui parle de la fonction InternetOpenUrlA. Tu trouveras ton bonheur !

@+
Arnotic,
Admin CS, MVP Visual C++
Messages postés
26
Date d'inscription
samedi 3 juillet 2004
Statut
Membre
Dernière intervention
18 août 2004

Donc ça donnerai :
<=======>
#include <stdio.h>
#include <wininet.h>
#pragma comment(lib, "Wininet.lib")

...Et est-ce que je pourrais avoir un peu d'aide pour le reste?

/*Acheter, Vendre, Echanger des cartes Yu-Gi-Oh! Jeu de Cartes à Jouer sur yugiohjcj.free.fr*/
Messages postés
85
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
18 septembre 2005

salut,

si tu veux juste rapatrier un fichier d'un site sur le disque de ton pc, tu peux utiliser la commande URLDownloadToFile, qui peut être d'une utilisation très simple.

a+
alain
Messages postés
26
Date d'inscription
samedi 3 juillet 2004
Statut
Membre
Dernière intervention
18 août 2004

Non nje préfere le lire directement à sa place sur le NET. Mais là je retourne sous Linux, ces commandes ne sont pas portables n'est-ce pas? Je n'ai toujours pas eu la réponse pour la suite de mon code car c bien joli toutes ces belles fonctions mais faut savoir quoi mettre en paramètres ensuite.
Merci pour une explication un peu + détaillée ...
/*Acheter, Vendre, Echanger des cartes Yu-Gi-Oh! Jeu de Cartes à Jouer sur yugiohjcj.free.fr*/
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Lu,
En faite tu parles exactement de la meme chose que eux!
Lire un fichier sur le net, équivaut a le copier sur ton disque dur puis le lire ensuite!
C'est ce que font tous les webbrowser.
Tu ne peux pas a proprement dis, lire un fichier directement sur le net!
Tu dois obligatoirement l'avoir sur ton disque dur!

Sous linux, tu dois savoir que la méthodes proposé par Arnotic avec les API, ne marche pas, et celle de alain non plus!

La seule solution portable est celle par les sockets encore que ....

Le probleme de Linux c'est qu'il n'uitlise pas tout a fait les sockets de la meme maniere que windows...

Sinon pour la méthode que propose alain, c'est simple.
Voici un exemple:

#include <stdio.h>
#include
#pragma comment (lib,"urlmon.lib")

int main()
{
printf("Debut du telechargement\n");
URLDownloadToFile(0,"http://www.monsite.fr/monfichier.txt","c:\\masauvegarde.txt",0,0);
printf("Le telechargement est fini");

return 0;
}

Si tu as besoin d'un exemple pour wininet je pourrai te poster une source en exemple...

A++ et bonne continuation

Samir