Problema com servidor de Telnet

6 respostas
B

Porque é que o meu servidor para telnet funciona mal com alguns clientes de telnet?

Com os clientes do windows 98/2000/XP não tenho problemas nenhuns mas por exemplo com o Putty (é um cliente de telnet q pode ser sacado do tucows.com) já dá problemas, não só a quem está a utiliza-lo mas também às outras pessoas que já estavam ligadas.

Qual é o problema? É do meu servidor em Java? Ou da configuracao de certos clientes de telnet? Se for do meu servidor o problema, q tipo de problema é o e que posso fazer para os correguir?

6 Respostas

Rafael_Steil

Bom, fiz um servidor de testes aqui e nao apresentou problema. Testei no Linux, no Windows 2000 e no Windows 98. Utilizei tanto o putty quanto os clientes para telnet nativos de cada sistema operacional.

Conforme voce ja havia postado em um outro topico, a linha para ler do cliente eu implementei assim:

Socket client = server.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));

/// codigo e mais codigo
String line = in.readLine();

// faz alguma coisa

Ou seja, nada de extraodinario. Se voce pudesse fornecer mais informacoes sobre o sistema operacional onde esta rodando o servidor ou mesmo o codigo fonte ( se nao fosse grande, claro ) isso poderia ajudar a tentar encontrar o problema.

[]'s
Rafael Steil

B

É exactamente esse o modo de input que eu uso, experimente fazer um output para a consola do que o utilizador escrever, se acontecer como acontece a mim vai aparecer um monte de caracteres aliatorios.

Já experimentei correr o servidor no win98 e XP, mas nao penso q isso faça diferenca porque supostamente o java comporta-se da mesma maneira seja em q sistam operativo for, certo ?

Paulo_Silveira

Eu acho que seu problema esta no lado do cliente, ele tem de configurar o PuTTY direitinho, senao vai dar pau de UTF! Se um usa inicode e outro usa ASC7 e outro ASCII, vai dar pau com certeza!

Poe o codigo principal ai pra gente ver!

Rafael_Steil

Paulo, acho que nao eh, digamos assim, soh isso. Na aplicacao de exemplo que eu fiz (aquela que te mostei) testei com o telnet via xterm e tmb pelo putty. So que testando a aplicacao do Bruno pelo mesmo xterm ( bom, era em outra maquina, mas com a mesma versao do redhat ) deu os problemas.

Pra quem nao viu, eh assim o problema: vc conecta no server… entao ele mostra uma tela de “apresentacao” e da pra comecar a digitar comandos. Entao digamos que voce digite “Testy”… qdo vc apertar backspace e depois “e”, vai ficar assim na tela:

Testy^Me

sacou? o mesmo vale para as teclas direcionais, por exemplo.

Bruno, vi que o teu programa mostra uma arte ascii quando o cara conecta. Como vc esta fazendo isso? note que mesmo que voce leia com readLine(), talvez o problema esteja antes, ou seja, em algum codigo que vc fez pra mostrar, seila, alguma outra coisa. Bom, sao suposicoes apenas…

Rafael

Paulo_Silveira

Gente!
As teclas mandam caracteres unicode pra voce!

Entao quando tem backspace, seta pra baixo, etc, voce mesmo precisa tratar, o java nao vai conseguir entender que o que voce quer eh volta pra tras, isso nem faria sentido certo? Senao todo socket que tem a dupla de byte 0Xxxxx (exemplo, claro) ele iria fazer backspace no byte anterior?

Sempre vai dar esses paus. Voce precisa capturar o InputStream, e byte por byte, ver se ele quer voltar pra tras, etc…

Pq voce esta dando soh um echo no que ele digitou. E setinha pra um lado eh um caractere! E ele imprime esse caractere!

Rafael_Steil

Mas pq no meu server nao deu isso? digo, pq nao ficou aparecendo na tela os ^M e pq as comparacoes de string fungavam? nao pode ser soh o unicode…

Criado 12 de setembro de 2002
Ultima resposta 13 de set. de 2002
Respostas 6
Participantes 3