【问题标题】:Change window size using Java Socket使用 Java Socket 更改窗口大小
【发布时间】: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 客户端一样设置分页。

标签: java sockets telnet


【解决方案1】:

找到了!

解决方案是使用子选项来协商窗口大小,并使用BufferedOutputStream而不是PrintWriter,因为它专注于处理字符,而不是字节。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    • 1970-01-01
    • 2022-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多