0

我正在尝试使用 Java 中的 Apache 的 TelnetClient 连接到 AS400。现在的目标是简单地逐行连接和读取屏幕并显示每一行。稍后我将重点介绍输入和交互。

当我通过 telnet 连接时,我的程序在尝试读取输入行时会“挂起”。我认为线程被阻塞:line = bfIn.readLine() 因为这是应用程序停止的地方。它不会崩溃,它只是卡在那里。

如果我使用不同的主机和相同的程序连接到一个简单的 telnet 交换机,程序打印出页面就好了,所以我想知道是否有一个额外的步骤来专门连接到 AS400?你可以通过 Apache TelnetClient for java 连接到 AS400 吗?如果没有,如何通过java连接AS400并与页面交互(看页面显示什么)?

这是我一直在使用的代码:

 import org.apache.commons.net.telnet.TelnetClient;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.PrintStream;
 import java.io.PrintWriter;
 import java.io.OutputStreamWriter;

public class AutomatedTelnetClient {
     private TelnetClient telnet = new TelnetClient();
     private InputStream in;
     private PrintStream out;
     private String prompt = "%";

    public AutomatedTelnetClient(String server, String user, String password) {
        try {
            // Connect to the specified server
             telnet.connect(host, 23);
             in = telnet.getInputStream();
             out = new PrintStream(telnet.getOutputStream());
             BufferedReader bfIn = new BufferedReader(new InputStreamReader(in));
             PrintWriter writer = new PrintWriter(telnet.getOutputStream(), true);
             System.out.println("BufferedReader ready to be read: " + bfIn.ready());

             try {
                String line;
                while ((line = bfIn.readLine()) != null) {
                    System.out.println(line);
                }
            }
            catch (IOException e) {
                System.out.println("Exception");
                e.printStackTrace();
            }

            telnet.disconnect();
            in.close();
            bfIn.close();

我认为可能发生的一个问题是 BufferedReader 可能无法获取 AS400 在连接时返回给它的内容,因此它无法正确读取它。

请注意bufferedReader.ready() 返回 false。我已确保主机有效并使用命令行连接工作。

4

1 回答 1

0

标准 telnet 可以与 IBM i 一起使用,但它并不理想,因为 5250 协议是为“一次屏幕”“智能”终端设计的,而不是一次一行或一次字符的哑终端。

您知道TN5250J 项目吗?

tn5250j 是用 Java 编写的用于 AS/400 的 5250 终端仿真器。

同样对于移动访问,其他值得关注的是IBM 提供的IBM i Mobile Access

于 2019-11-21T21:25:19.553 回答