【发布时间】:2018-05-27 15:42:13
【问题描述】:
我正在使用 Java telnet 套接字连接到网络元素并获取一些信息。连接有效,我可以读取输出。
现在我想优化这个过程,消除每个命令输出的分页。
使用以下代码建立连接:
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);
所以,当我执行一些带有长输出的命令时,结果似乎适合默认终端大小(80x25),我可以读取如下内容:
output line
output line
[...]
output line
output line
Press any key to continue (Q to quit)
同样,使用Linux的默认终端,分页发生,但如果我调整窗口大小,分页消失,所有输出都打印到控制台。
我想要的是以编程方式对 Java 套接字执行相同的操作。例如,“告诉”设备我的 Java 客户端的大小为 100x1000。 我已经尝试过Apache's Commons Net way,但它不起作用。
搜索答案,有人说你可以发送 SIGWINCH 信号或写类似的东西,但我不知道它是否有效:
out.write("\\e[8;200;200t");
是否有一些代码可以发送到服务器以使其工作?
【问题讨论】:
-
你是说你的终端正在生成“按任意键继续(Q 退出)”我从未见过。
-
@slim 没错!出于某种原因,由“原始”Java 套接字创建的 telnet 客户端像任何其他 GUI 客户端一样设置分页。