Serveur Web ? - C++ - Programmation
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)
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
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
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