gpt4 book ai didi

java - Telnet Java 代码可以在 Windows 中运行,但不能在 Unix 中运行

转载 作者:太空宇宙 更新时间:2023-11-04 11:54:46 25 4
gpt4 key购买 nike

我正在尝试通过 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();
}
}

最佳答案

我只需添加 write("\r\n"); 即可解决此问题写入后(“密码”);

感谢大家的努力。 :-)

Please refer this URL

关于java - Telnet Java 代码可以在 Windows 中运行,但不能在 Unix 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41469838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com