gpt4 book ai didi

java - Telnet 服务器返回奇怪的字符

转载 作者:行者123 更新时间:2023-11-29 08:07:36 24 4
gpt4 key购买 nike

我为一所学校制作了这个程序,它涉及一个 telnet 服务器。当我运行它时,它会返回奇怪的字符,例如 ÿûÿû。这是输出:

Client connected with the IP /127.0.0.1
Client /127.0.0.1 has entered the username ÿûÿû ÿûÿû'ÿýÿûÿýdcole.

我的代码:

Socket client = serv.accept();

InetAddress clientip = client.getInetAddress();

out("Client connected with the IP " + clientip);

InputStream clientinput = client.getInputStream();
OutputStream clientoutput = client.getOutputStream();

Scanner in = new Scanner(clientinput);
clientoutput.write("Please enter your username: ".getBytes());

String username = in.nextLine();
out("Client " + clientip + " has entered the username " + username + ".");

String pass = "Please enter the password for " + username + ": ";
clientoutput.write(pass.getBytes());

String password = in.nextLine();

if (username.equals("dcole") && password.equals("test")) {
clientoutput.write("\r\nCorrect password!".getBytes());
} else {
clientoutput.write("\r\nIncorrect password!".getBytes());
}

最佳答案

真正的问题是,您将 telnet 服务器视为一个简单地发送和接收字符数据的套接字服务器。不是这样的!

telnet 服务器实现 telnet 协议(protocol),如 RFC 854 中所述。 (由 RFC 5198 更新以支持 Unicode)。主要 RFC 指定了一些由 telnet 客户端或服务器发送的特殊序列。

如果您的客户端要在任何 telnet 服务器上正常工作,它需要正确地实现协议(protocol)。 WATTO 建议的解决方法在这种情况下可能会起作用……但您可能会发现这个(或另一个)telnet 服务器在其他点插入了这些“奇怪的字符”。事实上,他们根本不是什么“奇怪的人物”。它们是 telnet 协议(protocol)的定义明确的元素,并且它们具有一定的意义。

关于java - Telnet 服务器返回奇怪的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10099138/

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