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