Parse d'une requette http

Parse d'une requette http - C - Programmation

Marsh Posté le 05-02-2004 à 19:52:28    

Bonjour, je doit faire un mini server http en C
 
donc la partie connection etc tout marche, je récupere la requete dans un buffer buff[512].
 
il faut que je parse
 
GET /bidulle/machin HTTP1.1
...
 
pour récupérer /bidulle/machin, et renvoyer la liste des fichiers du repertoire
 
mais je sais pas comment récupérer uniquement le chemin :/
 
je me suis laissé dire qu'il faut utiliser sscanf(..), mais le man ne pas bien embalé, si quelqu'un pouvait m'aider ...

Reply

Marsh Posté le 05-02-2004 à 19:52:28   

Reply

Marsh Posté le 05-02-2004 à 20:21:31    

pas de sscanf, c'est trop peu sure
 
 
repère les espaces, et coupe
ici, je coupe avec un '\0' à la place du deuxième espace, mais tu peux aussi dupliquer le morceau de chaine
 

Code :
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5.   char buffer[512];
  6.   while(fgets(buffer, sizeof buffer, stdin))
  7.     {
  8.       char *start = strchr(buffer, ' ');
  9.       char *end = NULL;
  10.       if(start)
  11. {
  12.   ++start;
  13.  
  14.   end = strchr(start, ' ');
  15.   if(end)
  16.   {
  17.     *end = '\0';
  18.   }
  19.   puts(start);
  20. }
  21.     }
  22. }

Reply

Marsh Posté le 05-02-2004 à 21:21:52    

taz a écrit :

pas de sscanf, c'est trop peu sure
 
 
repère les espaces, et coupe
ici, je coupe avec un '\0' à la place du deuxième espace, mais tu peux aussi dupliquer le morceau de chaine
 


 
nickel je viens de faire un petit test c/c de ton code, c'est tout a fait ce que je cherche.
 
merci  :jap:


Message édité par EpoK le 05-02-2004 à 21:22:10
Reply

Marsh Posté le 05-02-2004 à 21:25:02    

par contre j'espère que tu comprends bien que ça bout en l'air buffer

Reply

Marsh Posté le 05-02-2004 à 21:29:34    

taz a écrit :

par contre j'espère que tu comprends bien que ça bout en l'air buffer


 
heu non je voi pas bien pourquoi ça le fou en l'air ...
 
en fait dans mon programme ca me dérange pas j'ai besoin que de cette info dans tout le buffer.
 
mais pourquoi ca le fout en l'air ?
 
edit :
 
a oui le *end = '\0';  non ?


Message édité par EpoK le 05-02-2004 à 21:30:26
Reply

Marsh Posté le 05-02-2004 à 21:32:43    

oui, parce que ça coupe
tu veux que je te montre comment dupliquer le morceau intéressant ou ça ira ?

Reply

Marsh Posté le 05-02-2004 à 21:51:14    

taz a écrit :

oui, parce que ça coupe
tu veux que je te montre comment dupliquer le morceau intéressant ou ça ira ?


 
ca ferra l'affaire, je n'ai besoin de rien d'autre dans mon buffer,  je voulait juste récuperer cette info, donc c'est bon.
 
encore merci  :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed