我正在尝试使用telnet连接,但服务器的响应是一个不可读的字符串,有人可以帮助我吗? (telnet服务器是一个Windows XP),我想通过telnet进行身份验证并执行一些命令。 以下代码如下:
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.Socket;
public class TelnetClient {
public static void main(String args[]) throws Exception{
// Create object of Socket
Socket soc = new Socket("192.168.56.101", 23);
String Command;
// Create object of Input Stream to read from socket
DataInputStream din = new DataInputStream(soc.getInputStream());
// Create object of Output Stream to write on socket
DataOutputStream dout = new DataOutputStream(soc.getOutputStream());
// Object of Buffered Reader to read command from terminal
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Welcome to Telnet Client");
System.out.println("< Telnet Prompt >");
Command = br.readLine();// reads the command
dout.writeUTF(Command);// sends command to server
System.out.println(din.readLine()); // gets the response of server
soc.close(); // close port
din.close(); // close input stream
dout.close(); // close output stream
br.close(); // close buffered Reader
}
}
并且服务器的响应是:ÿý%ÿûÿûÿý'ÿýýý有很多“?”
答案 0 :(得分:1)
Telnet不仅仅是一种“连接和转移”协议,您必须在连接时进行一些基本的握手和协商选项 - 例如 - 能够传输8位数据。您所看到的是服务器尝试协商连接选项。
基本协议 - 包括如何完成协商 - 在rfc854和there are a bunch of RFCs中描述了您可以协商的选项。简而言之,您需要在连接时(至少拒绝所有选项请求)与服务器进行一些基本协商才能获得真实数据。