Bonjour,
J'essaie dans un but personnel de réaliser un serveur et client de chat via le réseau local du style canal IRC.
Pour les messages entre le client et le serveur, j'aimerais utiliser des données brutes, mais j'ai un problème pour trouver une façon de m'assurer que toutes les données ont bien été reçues.
En fait la façon classique consisterait à indiquer en en-tête la taille des données, suivie de ces données. Le problème que cela pose est que n'importe qui pourrait falsifier ces données. En donnant une taille trop petit à la limite le message du client serait "simplement" ininterprétable et donc perdu, dans le cas d'une taille plus grande en revanche, j'attendrais sur le réseau des données inexistantes et mon thread se retrouverait bloqué. Cela pose un problème d'autant plus conséquent que les différents clients sont gérés via un sélecteur, donc pas en parallèle.
Une autre technique aurait été de placer un marqueur à la fin de mon paquet de données. Là plus de problème de taille, par contre un client malveillant pourrait simplement omettre ce marqueur et donc bloquer le serveur.
Alors voilà, je cherche une technique pour que le client ne puisse PAS bloquer le serveur. Je n'ai pas vraiment d'autres idées...
Merci,
Spootnik
Partager