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

Posted

技术标签:

【中文标题】Telnet Java 代码在 Windows 中工作,但在 Unix 中不工作【英文标题】:Telnet Java code working in Windows but not in Unix 【发布时间】:2017-05-19 02:23:02 【问题描述】:

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

我正在使用 Spring Tool Suite 进行开发和构建 Jar 文件。此外,我在pom.xml 中使用 UTF-8 编码。这段代码在 Windows 机器中运行良好,而在 UNIX 中失败,write 方法出现“密码超时”并打印垃圾值。

一个有趣的事实:我尝试用这个独立的类文件创建一个 jar,并在 Unix 机器中执行。令我惊讶的是,它运行良好,没有任何问题。而从 Spring Tool Suite 创建的 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();
  

【问题讨论】:

提示:您希望我们花时间帮助您。因此,请您花 2 分钟时间正确格式化/缩进您的源代码;而不是在我们身上丢下这样的混乱 关于您的实际问题:当您从 Unix 系统上的命令行打开一个 telnet 会话时 - 这有效吗?如果没有,请忘记从 Java 中执行此操作。你看,某处可能有一些防火墙阻止你访问那个远程服务器。 我已经减少了过度格式化,并且提示:使用backticks 格式化代码,例如方法。尊重大小写约定也有助于提高可读性。 对不起,我是新来这里的,因此错过了格式化。现已编辑。 @GhostCat,我可以在 unix 中手动输入密码。最重要的是,这段代码可以在我的 Windows 机器上完美运行。 太棒了……那是一件好事! 【参考方案1】:

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

感谢大家的努力。 :-)

Please refer this URL

【讨论】:

以上是关于Telnet Java 代码在 Windows 中工作,但在 Unix 中不工作的主要内容,如果未能解决你的问题,请参考以下文章

windows server 2003中没有telnet服务怎么安装

windows7无法启动telnet远程登录

windows2008 r2怎么开启telnet服务器

如何在Windows系统上利用Telnet协议连接Linux服务器

如何在Windows系统上利用Telnet协议连接Linux服务器

Windows telnet用法是啥?