Domanda

Ho un daemon di Solaris scritto in java6. I clienti possono connettersi ad esso utilizzando un'interfaccia stile telnet. Essi telnet a una determinata porta, e ho letto le linee di ingresso e di agire su di essi.

A un certo punto ho bisogno di richiedere all'utente di inserire una password, e mentre stanno entrando che voglio disattivare la visualizzazione dei caratteri al client telnet.

Il codice ha un oggetto Socket e crea un InputStream dal getInputStream del socket () risultato, loro poi legge e buffer personaggi del InputStream, rottura sulla CR / LF confini.

Non riesco a vedere alcun attributo su entrambi InputStream o la presa per disabilitare la visualizzazione dei caratteri al client.

Qualcuno mi può spingere nella giusta direzione?

È stato utile?

Soluzione

Sembra che avete bisogno di costruire un terminale virtuale semplice rete che supporta i comandi senza eco, ecc. C'è già una buona risposta si dovrebbe fare riferimento a su SO: Telnet Server

Altri suggerimenti

Si dovrebbe capire dove l'eco proviene. le connessioni TCP e InputStreams java non forniscono eco per conto proprio. Il programma telnet che l'utente esegue normalmente si avvia in modalità "echo locale", nel senso che riecheggia tutto digitato dall'utente per schermo dell'utente. Quando il client telnet si connette a un server telnet reale, negozia comunemente modalità "echo remoto" nel qual caso il sistema remoto fornisce l'eco. Quando telnet si connette a qualcos'altro, come un server HTTP o SMTP, rimane solo in modalità eco locale.

L'utente può emettere un comando per disattivare l'eco locale nel client, ma non sarebbe molto facile da usare per richiedere agli utenti di farlo. Come l'altra risposta, dice, se si desidera passare eco dentro e fuori, è necessario migliorare il server per supportare il protocollo telnet, quindi negoziare remota eco con i clienti.

Se si esegue questa operazione, potrai anche incontrare la questione della line-at-a-time rispetto personaggio-at-a-time. Telnet si avvia in modalità line-at-a-tempo. Si onora chiavi linea di editing come backspace a livello locale, e invia solo la linea al server quando l'utente preme ritorno. Se stai facendo eco a distanza, allora avete bisogno di eco personaggi come l'utente digita li, non dopo che colpisce di ritorno. Quindi si dovrà sostenere personaggio-at-a-tempo e mettere in atto la modifica della riga nel server.

Si dovrebbe guardare da vicino il programma server telnet sul server host. Potrebbe essere possibile utilizzare il server telnet esistente come un frontend per il programma, piuttosto che reimplementare tutto ciò che lo fa. Buona fortuna.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top