char - sitios - Forzar al cliente de telnet en el modo de caracteres
telnet en cmd (3)
Interesante. Tuve más suerte enviando
IAC WILL ECHO IAC WILL SUPPRESS_GO_AHEAD IAC WONT LINEMODE
255 251 1 255 251 3 255 252 34
IAC WONT LINEMODE parece ser redundante: mi cliente de telnet parece llegar al estado correcto sin él, pero lo dejé para que estuviera completo.
Tengo una aplicación en la que acepto una conexión de socket desde un cliente de telnet y presento una interfaz gráfica de usuario sencilla basada en el teclado.
El cliente de telnet, al menos en Linux, está predeterminado en el modo línea a la vez, por lo que siempre tengo que hacer ^]mode char
manualmente.
Un destello de los RFC relevantes sugiere que si mi aplicación simplemente envió los caracteres IAC DONT LINEMODE (/377/376/042)
tan pronto como el cliente se conecta, el cliente debe ser forzado al modo de caracteres. Sin embargo, no hace ninguna diferencia.
¿Cuál es el código más simple que haría el trabajo? Idealmente solo una cadena para ser enviada. Mi aplicación puede absorber cualquier basura que el cliente devuelva.
Por lo que vale, lo resolví yo mismo.
// IAC WONT LINEMODE IAC WILL ECHO
write(s,"/377/375/042/377/373/001",6);
obtiene el control remoto (al menos Telnet de un Xterm en una caja Linux) en el estado correcto.
La solución de Kevin funciona muy bien: write(s,"/377/375/042/377/373/001",6);
Aunque el comentario es un poco incorrecto. Debe decir "DO LINEMODE", no "WONT LINEMODE", es decir: // IAC DO LINEMODE IAC WILL ECHO
(Fuente: rfc854 )