2017-12-13 6 views
0

Ich verwende einen Java-Telnet-Socket, um eine Verbindung zu einem Netzwerkelement herzustellen und Informationen zu erhalten. Die Verbindung funktioniert, und ich kann die Ausgabe lesen.
Jetzt möchte ich den Prozess optimieren, die Seitennummerierung jedes Befehls Ausgabe zu beseitigen.Ändern der Fenstergröße mit Java-Socket

Die Verbindung mit dem folgenden Code gemacht wird:

Socket soc = new Socket(ip,23); 
InputStream in = new DataInputStream(soc.getInputStream()); 
Writer out = new PrintWriter(soc.getOutputStream(), false); 
//... 
out.write(command+"\n"); 
out.flush(); 
//... 
String output = readUntilPrompt(in); 

Also, wenn ich einen Befehl mit einer langen Ausgabe ausführen, wird das Ergebnis der Standard-Klemmengröße (80x25) und ich kann etwas passen wie lesen :

output line 
output line 
[...] 
output line 
output line 
Press any key to continue (Q to quit) 

tun das gleiche, mit dem Standard-Terminal von Linux erfolgt die Paginierung, aber wenn ich die Größe des Fensters, die Paginierung verschwindet und alle auf der Konsole gedruckt wird.

Was ich will, ist programmatisch dasselbe mit dem Java-Socket. Um dem Gerät zu sagen, dass mein Java-Client beispielsweise eine Größe von 100x1000 hat. Ich habe schon versucht Apache's Commons Net way, aber es funktioniert nicht.

der Suche nach Antworten, manche Leute sagen, Sie SIGWINCH Signal oder schreiben Sie etwas wie dieses senden kann, aber ich weiß nicht genau, es funktioniert:

out.write("\\e[8;200;200t"); 

Gibt es einen Code an den Server senden zu machen Es klappt?

+0

Sie sagen, dass Ihr Terminal erzeugt „Drücken Sie eine beliebige Taste, um fortzufahren (Q zu beenden)“ Ich habe das noch nie gesehen. – slim

+0

@slim Genau! Aus irgendeinem Grund setzt der vom "rohen" Java-Socket erstellte Telnet-Client die Seitennummerierung wie jeder andere GUI-Client. – elias

Antwort

0

Es gefunden!

Die Lösung ist die Suboption zu verwenden Fenstergröße zu verhandeln, und verwendet BufferedOutputStream statt PrintWriter, weil es auf Deal mit Zeichen konzentriert, nicht Bytes.

enter image description here

Verwandte Themen