Question FAQ : Comment puis-je lire un caractère à la fois ?
Cette question est souvent posée par les personnes qui testent leur serveur avec telnet et qui veulent traiter saisies un caractère à la fois. Sans indication spéciale du serveur, telnet va stocker chaque ligne de texte que vous tapez et ainsi telnet ne va pas l’envoyer tant que vous n’aurez pas pressé la touche Enter. La bonne méthode pour lire un seul caractère est (comme vous vous en doutez) :
ou encore :
Le reste de cette réponse part du principe que vous voulez forcer telnet à envoyer des caractères individuellement et non pas en mode ligne par ligne.
Votre serveur doit envoyer une séquence de caractères de contrôle :
0xff 0xfb 0x01 0xff 0xfb 0x03 0xff 0xfd 0x0f3
Ce qui peut être traduit par :
IAC WILL ECHO IAC WILL SUPPRESS-GO-AHEAD IAC DO SUPPRESS-GO-AHEAD.
Ce code va supprimer l’écho des caractères si bien que vous devrez les renvoyer si vous voulez que l’utilisateur voit les caractères qu’il saisi. Le retour chariot est suivi par un caractère « null » (0) que vous devez gérer. Si vous recevez un caractère 0xff, il sera suivi par 2 caractères supplémentaires. Ce sont des caractères de contrôle du protocole telnet.
Pour plus d’information sur la signification de cette séquence de caractères de contrôle, voir la RFC 854 et RFC 855.
Partager