Bonjour,
Après avoir lu cet article: http://emmanuel-delahaye.developpez....reseaux-c/#LIV, je ne comprends pas pourquoi il ne faut pas terminer les chaînes envoyées par '\0'...Quelqu'un pourrait m'éclairer ?
Merci !
Bonjour,
Après avoir lu cet article: http://emmanuel-delahaye.developpez....reseaux-c/#LIV, je ne comprends pas pourquoi il ne faut pas terminer les chaînes envoyées par '\0'...Quelqu'un pourrait m'éclairer ?
Merci !
Je crois que rien ne t'en empêche, à condition de bien faire le distingo. Le zéro est considéré comme un octet de donnée ordinaire et comptabilisé en tant que tel. Si tu l'envoies, la taille des données reçues sera alors d'une unité plus élévée que la longueur de ta chaîne, telle qu'indiquée par strlen(), par exemple.
De plus, tous les systèmes et tous les langages ne gèrent pas la fin de chaîne de la même façon. Si le logiciel qui reçoit tes informations n'est pas écrit en C, cela peut contraindre le programmeur à rechercher et éliminer les zéros à la main.
D'autre part, le type de transmission que tu utilises n'est pas forcément garanti : si tu comptes de manière aveugle sur l'émetteur pour t'envoyer un zéro final et que celui ne le fait pas, soit parce que la transmission a partiellement échoué, soit parce que quelqu'un s'est connecté exprès avec un client personnel pour envoyer des trames malformées, alors ton programme plantera, et la cause deviendra une faille de sécurité à part entière.
Merci beaucoup pour cette réponse détaillée !
Partager