Telnet Java 代码在 Windows 中工作但在 Unix 中不工作

Telnet Java code working in Windows but not in Unix

我正在尝试通过 SwitchClient 方法 Telnet 服务器 并使用密码进行身份验证。我写了2个方法,readUntil读取遍历到输出结束,write写密码

我正在使用 Spring 工具套件 进行开发和构建 Jar 文件。此外,我在 pom.xml 中使用 UTF-8 编码。同一段代码在 Windows 机器上运行良好,而在 UNIX 中使用 "Password Timeout" at write 方法失败并打印垃圾值。

一个有趣的事实:我试图用这个独立的 class 文件创建一个 jar,并在 Unix 框中执行。令我惊讶的是,它运行良好,没有任何问题。而从 Spring 工具套件 创建的 jar 仍然不起作用 。请帮忙。

public SwitchClient(String server, String user, String password) {
  try {         
    telnet.connect(server, 23);
    in = telnet.getInputStream();
    out = new PrintStream(telnet.getOutputStream(),false,"UTF-8");
    readUntil("Enter Password: ");
    write("password");
  } catch (Exception e) {
    e.printStackTrace();
  }
}

public String readUntil(String pattern) {
  try {
    char lastChar = pattern.charAt(pattern.length() - 1);
    StringBuffer sb = new StringBuffer();
    char ch = (char) in.read();
    while (true) {
      System.out.print(ch);
      sb.append(ch);
      if (ch == lastChar) {
        if (sb.toString().endsWith(pattern)) {
          return sb.toString();
        }
      }
    ch = (char) in.read();
    }
  } catch (Exception e) {
    e.printStackTrace();
  }
  return null;
}

public void write(String value) {
  try {
    out.println(value);
    out.flush();
  } catch (Exception e) {
    e.printStackTrace();
  }
}

我可以通过添加 write("\r\n"); 来解决这个问题写入后("password");

感谢大家的努力。 :-)

Please refer this URL