Traiter séparément CR et LF
Bonjour,
Je développe une Applet Java qui a pour but de remplacer une ancienne console ASCII. Le système auquel je suis relié envoie donc des caractères CR ou LF tantôt séparés tantôt à la suite (CRLF pour nouvelle ligne).
Je voudrais pouvoir traiter tous les cas.
Je reçois ces caractères d'une DataInputStream
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| public tcpip(InetAddress ipa, int port)
{
Socket s1 = null;
try { // Open the socket
s1 = new Socket(ipa.getHostAddress(), port);
}
catch (IOException e) {
System.out.println("Error opening socket");
return;
}
s = s1;
try { // Create an input stream
dis = new DataInputStream(new BufferedInputStream(s.getInputStream()));
}
catch(Exception ex) {
System.out.println("Error creating input stream");
}
try { // Create an output stream
dos = new DataOutputStream(new BufferedOutputStream(s.getOutputStream()));
}
catch(Exception ex) {
System.out.println("Error creating output stream");
}
Poll = new Thread (this);
} |
Je décode donc le flot d'octet que je reçois de la manière suivante
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| switch(CslText[CslIndex])
{
case CAR_ESC:
TemoinESC=true;
break;
case CAR_TAB:
//Avance au prochain caractère
console.DeplaceCurseur(+1);
break;
case CAR_BS:
//Reculer Car. Précédent
console.DeplaceCurseur(-1);
break;
case CAR_CR:
//aller au début de ligne
console.CurrentPosition=NbLigneCnsl*console.Xmax;
console.FConsole.setCaretPosition(console.CurrentPosition);
TemoinSL=true;
break;
case CAR_LF:
//saut de ligne |
Mais durant mes tests, je m'aperçois que si tous se passe bien lorsque je reçois CR et LF séparément. Si je les reçois à la suite l'un de l'autre CRLF Java me fait sauter LF.
D'où ma question: Comment forcer Java à traiter tous les caractères reçus?
Merci d'avance.