Como enviar várias linhas de informações para telnet host / AS400 e ler resultando tela em formato estruturado em Java

votos
0

Eu estou tentando desenvolver um programa Java que pode enviar várias linhas de informação a um host telnet / AS400, em seguida, receber a tela, resultando em um formato estruturado. Um exemplo disto pode ser credenciais de login (utilizador, passe, da biblioteca, etc.).

Com telnet / AS400, quando as Ligações de usuário para o host usando prompt de comando, ele exibe várias linhas que os valores de entrada podem ser inseridos em e, em seguida, enviados para o host. Como isso:

comando

[interação

Vemos o exemplo de que é possível enviar várias linhas de informações para o anfitrião telnet usando a linha de comando do Windows. Eu quero criar um programa Java que tem a mesma funcionalidade (envio de comandos em várias linhas e leitura na tela em um formato estruturado).

Eu tentei usar o cliente Apache Telnet para ler a tela em usar Apache Commons IOUtils. Como isso:

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);
}

}

o que resulta em ler a tela do InputStream e depois exibi-lo. Como isso

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

A partir deste ponto, não posso escolher qual linha que eu enviar informações de volta. Mais concretamente, se eu digitar qualquer texto e enviá-lo de volta através do console, ele vai pensar que é para o campo de nome de usuário. Eu não pode especificar qualquer outra linha ou campo.

É possível escolher o que linha de entrada campo que você está enviando informações sobre o uso de Java?

A razão que ele precisa ser em Java é para que eu possa incorporá-lo em um aplicativo Android.

Publicado 02/12/2019 em 23:57
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Você provavelmente vai querer fazer referência ao projeto TN5250J

O protocolo que você precisa é de 5250 sobre telnet. 5250 é o protocolo de exibição utilizado pela IBM i. telnet reta está faltando certos códigos de controle, chaves e serviços prestados por 5250. Você pode fazer telnet trabalho para telas simples, mas a maioria não vai. VT-100 é um substituto pobre para 5250.

Respondeu 03/12/2019 em 05:56
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more