Pregunta

Tengo un daemon de Solaris escrito en java6. Los clientes pueden conectarse a él mediante una interfaz de estilo telnet. Ellos telnet a un puerto determinado, y yo leí las líneas de entrada y actuar sobre ellos.

En un momento en el que necesito para pedir al usuario que introduzca una contraseña, y mientras que están entrando que quiero desactivar el eco de caracteres de vuelta al cliente telnet.

El código tiene un objeto Socket y crea un InputStream de getInputStream del socket () En consecuencia, a continuación, lee y tampones personajes de la InputStream, ellos se malogre cr / lf límites.

No puedo ver ningún atributo ya sea en el InputStream o el zócalo para desactivar el eco de caracteres de vuelta al cliente.

Puede alguien empujar en la dirección correcta?

¿Fue útil?

Solución

Parece que usted necesita para construir una terminal virtual de red simple que es compatible con los comandos sin eco, etc. Ya hay una buena respuesta debe consultar el SO: servidor Telnet

Otros consejos

Usted debe entender que el eco está viniendo. conexiones TCP y InputStreams java no proporcionan eco por su cuenta. El programa de telnet que el usuario ejecuta normalmente se inicia en modo "eco local", lo que significa que se hace eco de todo lo tecleado por el usuario a la pantalla del usuario. Cuando el cliente Telnet se conecta a un servidor telnet real, que comúnmente se negocia modo "eco remoto" en cuyo caso el sistema remoto proporciona el eco. Cuando telnet se conecta a otra cosa, como un servidor HTTP o SMTP, que sólo se queda en modo eco local.

El usuario puede emitir una orden para desactivar el eco local en el cliente, pero no sería muy fácil de usar para requerir a los usuarios a hacer eso. Como dice la otra respuesta, si desea cambiar haciéndose eco de encendido y apagado, que tendrá que mejorar su servidor para soportar el protocolo Telnet, luego negociar eco remoto con los clientes.

Si usted hace esto, también se encontrará con el problema de la línea-en-un-tiempo frente personaje-en-un-tiempo. Telnet se inicia en modo de línea-en-un-tiempo. Se rinde homenaje a las teclas de edición de línea como de retroceso a nivel local, y sólo envía la línea al servidor cuando vuelven los éxitos de usuario. Si estás haciendo eco remoto y, a continuación, necesita escribir caracteres medida que el usuario ellos, no después de que golpea retorno. Por lo que tendrá que soportar personaje-en-un-tiempo y poner en práctica la edición de línea en el servidor.

Usted debe mirar de cerca el programa de servidor telnet en el host del servidor. Podría ser posible utilizar el servidor telnet existente como un frontend para su programa, en lugar de reimplementar todo lo que hace. Buena suerte.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top