【问题标题】:How to send multiple lines of information to telnet/AS400 host and read resulting screen in structured format in Java如何将多行信息发送到 telnet/AS400 主机并以 Java 中的结构化格式读取结果屏幕
【发布时间】:2020-03-27 12:23:58
【问题描述】:

我正在尝试开发一个 Java 程序,它可以向 telnet/AS400 主机发送多行信息,然后以结构化格式接收结果屏幕。这方面的一个示例可能是登录凭据(用户、通行证、库等)。

使用 telnet/AS400,当用户使用命令提示符连接到主机时,它会显示多行,可以在这些行上输入输入值,然后发送到主机。 像这样:

[

我们从示例中看到,可以使用 Windows 命令行向 telnet 主机发送多行信息。我想创建一个具有相同功能的 Java 程序(多行发送命令并以结构化格式读取屏幕)。

我尝试使用 Apache Telnet 客户端来阅读使用 Apache Commons IOUtils 的屏幕。像这样:

import java.io.IOException;
import org.apache.commons.io.IOUtils;
import org.apache.commons.net.telnet.TelnetClient;
import examples.util.IOUtil;

 // This class requires the IOUtil support class!
public final class Telnet {

public static final void main(String[] args) {
    TelnetClient telnet;

    telnet = new TelnetClient();

    try {
        telnet.connect("hostname", 23);
    } catch (IOException e) {
        e.printStackTrace();
        System.exit(1);
    }

 //   IOUtils
    IOUtil.readWrite(telnet.getInputStream(), telnet.getOutputStream(), System.in, System.out);

    try {
        telnet.disconnect();
    } catch (IOException e) {
        e.printStackTrace();
        System.exit(1);
    }

    System.exit(0);
}

}

这会导致从 InputStream 读取屏幕然后显示它。像这样

[2J [1;22H[1m[0m [1m             Sign On             [0m [2;47H System  . . . . . :   NLSI5D   [3;47H Subsystem . . . . :   QINTER     [4;47H Display . . . . . :   QPADEV000Q [6;16H User  . . . . . . . 

从这一点开始,我无法选择将信息发送回哪条线路。更具体地说,如果我输入任何文本并通过控制台发回,它会认为它是用于用户名字段的。我无法指定任何其他行或字段。

是否可以选择您要发送有关使用 Java 的信息的字段输入行?

它需要在 Java 中的原因是我可以将它嵌入到 Android 应用程序中。

【问题讨论】:

  • 您可能正在寻找终端仿真器。但是,终端仿真器不会知道哪一行是什么……它不会知道您正在输入用户名或密码。它只知道如何显示文本和管理光标等... Java 有很多终端仿真器项目。
  • 你到底想完成什么?在主机上运行命令?从主机检索数据?
  • 我想我正在尝试从主机发送和接收命令。如果您可以考虑发送文本命令。例如,将用户和密码信息发送到主机,然后在它显示的下一页上检索信息。

标签: java command-line telnet ibm-midrange command-line-tool


【解决方案1】:

您可能想要引用TN5250J project

您需要的协议是 5250 over telnet。 5250 是 IBM i 使用的显示协议。直接 telnet 缺少 5250 提供的某些控制代码、键和服务。您可以使 telnet 用于简单的屏幕,但大多数不会。 VT-100 是 5250 的较差替代品。

【讨论】:

  • 您知道在哪里可以找到一些使用中的 TN5250J 示例吗?
  • 不是,不过是开源的,应该可以看代码。
  • 它似乎适用于桌面应用程序,所以我不确定如何将其应用到移动应用程序中。
  • 至少您可以看到他们如何处理 5250 数据流并在您的应用中重新创建它。
  • 是的,我可以尝试这样做。你有任何分解项目的策略吗?我非常了解 Java,但缺乏剖析项目的经验。我的第一个想法是尝试构建一个封装所有类的更高级别的图表,然后深入研究它们以了解它们是如何连接的以及它们之间的通信。我意识到这不是最初的问题,但我希望向更多经验丰富的开发人员学习,因为我还是一名学生。
猜你喜欢
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
  • 2019-06-01
  • 1970-01-01
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多