Eu estou desenvolvendo um programa que será o servidor num esquema entre o programa java e um microterminal, onde as teclas que o usuario digitar serão enviadas para o servidor e ele verá na database se tem um usuário referente aquele id. Estou usando o método readByte() que lê digito por dígito por que foi um dos unicos que funcionou e é o mais rápido dentre os que eu testei.
A parte em que ele lê os dígitos:
//Usuario
os.writeUTF("ID do funcionario: ");
do{
//
os.writeUTF("ID do funcionario: "+id);
tecla = trans(is.readByte());
if(func3==0){
id += tecla;
acao(tecla);
}else if(func3==1){
acaoEspecial(tecla,1);
}
tecla="";
func3=0;
}while(id==null||id.equals("")&&func2!=1);
func2 = 0;
iduser = Integer.parseInt(id);
gui.log.append("ID do funcionario: "+iduser+"\n");
//Senha
do{
os.writeUTF("Senha: "+pass);
tecla = trans(is.readByte());
if(func3==0){
pass += tecla;
acao(tecla);
}else{
acaoEspecial(tecla,2);
}
tecla="";
func3=0;
}while(pass==null||pass.equals("")&&func2!=1);
func2 = 0;
senha = Integer.parseInt(pass);
gui.log.append("Senha: "+senha+"\n");
Onde:
os = OutputStream
gui = formulário atual
tecla = trans(is.readByte()); = trans é um método que eu fiz pra ele retornar a string referente ao Byte que chega pelo is(InputStream)
func3 = no metodo trans se ele não for um dos bytes referentes aos números, ele atribui uma valor int a essa variavel pra eu tratar os comando tipo o enter ou o delete.
func2 = essa tecla tem valor 1 quando o enter é pressionado
O problema é que fica desse jeito no log quando eu vou apertando 123(sem o enter):
ID do funcionario: 1
Senha: 2
ID do funcionario: 13
Senha: 21
ID do funcionario: 132
Senha: 213
ID do funcionario: 1321
Senha: 2132
ID do funcionario: 13213
Eu usei o do-while pois queria que ele executasse isso pelo menos uma vez.
Eu queria que acontecesse desse jeito: Uma tecla qualquer seria pressionada no terminal, ela seria enviada para o servidor, se fosse um numero, voltaria e seria impressa na tela do terminal, se fosse um evento(enter, delete, etc) o servidor trataria e imprimiria na tela do terminal o resultado.
Sendo que tem dois campos para preenchimento, id e senha, então quando o cliente terminasse de digitar o id e apertasse enter, o servidor iria armazenar e ja exibir a string "Senha: " na tela to terminal, então o cliente iria digitar a senha e apertar enter, então o servidor iria buscar na data base.
Mas não estou conseguindo fazer, alguém pode me ajudar?