Lire un fichier via HTTP

yugiohjcj Messages postés 26 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 18 août 2004 - 3 juil. 2004 à 22:55
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013 - 4 juil. 2004 à 18:12
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

cs_Arnotic Messages postés 933 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 9 janvier 2012
3 juil. 2004 à 23:25
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++
0
yugiohjcj Messages postés 26 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 18 août 2004
4 juil. 2004 à 00:51
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*/
0
cs_alain34270 Messages postés 85 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 18 septembre 2005
4 juil. 2004 à 07:54
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
0
yugiohjcj Messages postés 26 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 18 août 2004
4 juil. 2004 à 16:11
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*/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
4 juil. 2004 à 18:12
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
0
Rejoignez-nous