Java和Telnet响应不可读

时间:2014-06-11 04:15:26

标签: java sockets telnet

我正在尝试使用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
}

}

并且服务器的响应是:ÿý%ÿûÿûÿý'ÿýýý有很多“?”

1 个答案:

答案 0 :(得分:1)

Telnet不仅仅是一种“连接和转移”协议,您必须在连接时进行一些基本的握手和协商选项 - 例如 - 能够传输8位数据。您所看到的是服务器尝试协商连接选项。

基本协议 - 包括如何完成协商 - 在rfc854there are a bunch of RFCs中描述了您可以协商的选项。简而言之,您需要在连接时(至少拒绝所有选项请求)与服务器进行一些基本协商才能获得真实数据。