Frage

Ich habe eine Solaris-daemon, geschrieben in Java6.Clients können eine Verbindung mit einem telnet-Stil-Schnittstelle.Sie telnet auf einem bestimmten port, und ich lese Zeilen der input-und nach Ihnen zu handeln.

An einem Punkt muss ich den Benutzer auffordern, ein Kennwort einzugeben, und während Sie die Eingabe, dass ich möchten, deaktivieren Sie das echo von Zeichen zurück, um den telnet-client.

Der code hat ein Socket-Objekt und erstellt einen InputStream vom socket s getInputStream (), dann liest und Puffer, die Charaktere aus dem InputStream, Sie zu brechen, bis auf die cr/lf-Grenzen.

Ich kann nicht sehen, alle Attribute, die entweder auf dem InputStream oder die Steckdose, um zu deaktivieren Sie das echo von Zeichen an den client zurück.

Kann jemand stupst mich in die richtige Richtung?

War es hilfreich?

Lösung

Klingt wie Sie ein einfaches Network Virtual Terminal bauen müssen, die kein Echo etc Befehle unterstützt. Es gibt bereits eine gute Antwort Sie auf SO beziehen sollten: Telnet-Server

Andere Tipps

Sie sollte verstehen, wo das echo aus.TCP-verbindungen und java InputStreams nicht das echo auf Ihre eigenen.Das telnet-Programm, das den Anwender läuft dies üblicherweise in "lokales echo" - Modus, was bedeutet, dass es hallt alles eingegeben durch den Benutzer auf dem Bildschirm des Benutzers.Wenn der telnet-client eine Verbindung zu einer tatsächlichen telnet-server, ist es Häufig verhandelt "remote echo" - Modus, in welchem Fall das remote-system bietet den echo.Wenn die telnet-Verbindung zu etwas, wie eine HTTP-oder SMTP-server, bleibt er einfach im lokalen echo-Modus.

Der Benutzer kann einen Befehl zu schalten Sie das lokale echo im client, aber es wäre nicht sehr Benutzer-freundlich zu verlangen, dass Ihre Benutzer zu tun.Wie die andere Antwort sagt, wenn Sie wollen, um Schalter echo auf und off, Sie brauchen, um verbessern Sie Ihre server für die Unterstützung der telnet-Protokoll, dann verhandeln remote-echo mit den Kunden.

Wenn Sie dies tun, werden Sie begegnen auch die Frage der line-at-a-time-vs.character-at-a-time.Telnet startet in-line-at-a-time-Modus.Es ehrt line-Bearbeitung von Tasten wie backspace lokal und sendet nur die Linie, um die server, wenn der Benutzer zuvor zurück.Wenn Sie remote-echo, dann müssen Sie echo Charaktere wie der Benutzer eingibt, und nicht, nachdem er sich zuvor zurück.So müssen Sie die Unterstützung character-at-a-time und implementieren line-Bearbeitung im server.

Sie sollten genau hinsehen, um den telnet-server-Programm auf Ihrem server-host.Es könnte möglich sein, bestehende telnet-server als frontend für Ihr Programm, sondern als reimplementing alles, was Sie tut.Viel Glück.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top