Serveur Web ?

Serveur Web ? - C++ - Programmation

Marsh Posté le 01-02-2003 à 10:31:41    

Bonjour,
 
je suis en train de coder un petit serveur web en C, et j'avoue que j'ai des problèmes. Je n'arrive pas à écrire quelque chose de correct dans la socket.
Je m'explique :
je génère un header du type :
HTTP/1.1 200 OK\r\n
Content-Type: text/html\r\n
\r\n
Puis ensuite je balance le code html.
J'initialise mes chaînes de la façon suivante :
head = (char *)calloc(200, sizeof(char));
body = (char *)calloc(600, sizeof(char));
total = (char *)calloc(800, sizeof(char));
 
'calloc' est censé me mettre toute la zone à zéro.
Ensuite je fais :
strcat(total, head);
strcat(total, body);
 
Püis quand je veux écrire dans la socket, il me faut la taille du truc :
taille = sizeof(total);
Evidemment taille contient la taille complète de la zone, y compris si elle est vide.
Puis j'écrit :
write(sockfd, total, taille);
 
Bon, jusque là ça va... Le soucis c'est que le navigateur récupère bien l'en-tête et le corps, mais aussi plein de caractères cabalistiques après le dernier </HTML>.
J'imagine bien évidemment que c'est dû au 'taille' qui est trop grand par rapport à ma zone. Mais comme 'calloc' est censé avoir tout mis à zéro, j'arrive pas à saisir l'erreur !
 
Si quelqu'un s'y connaît bien et voit d'où peut venir mon problème, je suis preneur de toute aide :)
 
Merci
--  
lomba

Reply

Marsh Posté le 01-02-2003 à 10:31:41   

Reply

Marsh Posté le 01-02-2003 à 12:23:44    

Pour être sur, mets toi même à 0 toute la chaîne.
 
2 trucs :
- pourquoi concaténer head et body ? Autant faire 2 appels à la fonction write.
- taille = sizeof(total) : ce ne serait pas plutot taille = strlen(total) :??:

Reply

Marsh Posté le 01-02-2003 à 12:53:04    

Tout a fait d'accord avec mossieur bebert, la tu recupere la taille d'un pointeur de char c'est a dire en general 4 octets, rein avoir avec la taille de ta chaine

Reply

Marsh Posté le 01-02-2003 à 13:24:10    

Clie a écrit :

Tout a fait d'accord avec mossieur bebert, la tu recupere la taille d'un pointeur de char c'est a dire en general 4 octets, rein avoir avec la taille de ta chaine


Tout à fait d'accord avec vous deux :)
J'ai capté un peu plus tard que le strlen était vachement mieux pour le write...
 
Merci ;)
--  
lomba

Reply

Sujets relatifs:

Leave a Replay

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