【问题标题】:Cannot read data from telnet connection无法从 telnet 连接读取数据
【发布时间】:2012-11-19 15:07:37
【问题描述】:

我正在尝试使用 Java 中的 Sockets 制作一个简单的 telnet 客户端。这是我写的:

public class NetUtil {
    public static void main(String[] args) throws IOException {
        Socket sock = new Socket("localhost", 23);
        InputStream in = sock.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(in));

        String output;
        while((output=br.readLine())!=null){
            System.out.println(output);
        }
    }
}

问题是尝试从缓冲读取器读取时输出冻结。我检查了与 sock.isConnected() 的连接 - 它已连接。我的 telnet 服务器已启动并正在运行 - 我已从控制台检查过 - 我可以连接到我的工作站,但是当我尝试使用套接字时,它失败了。

【问题讨论】:

  • 我认为您应该在尝试从套接字读取之前进行 telnet 握手。 Telnet 并不像最初看起来那样简单。编辑:不要介意以前的评论
  • 我不明白 - 你的意思是在读取之前尝试将用户名/密码写入套接字?
  • 您需要提供有关客户端的服务器信息(编码、回显状态等)如果您希望自己实现,请研究 RFC (en.wikipedia.org/wiki/Telnet)
  • 好的,谢谢您的建议。至少我知道从哪里开始。

标签: java sockets telnet


【解决方案1】:

我认为您不应该在这里重新发明轮子。尝试使用 Apache Commons Net telnet 客户端。

【讨论】:

  • 好吧,我想这是最简单的方法,但我很好奇出了什么问题:) - 我只是看不出出现此类问题的任何原因
【解决方案2】:

你确定服务器发送了一些东西吗?它是否也发送换行符?您的程序通过调用 readLineBufferedReader 来期待它。

【讨论】:

  • 是的,我正在尝试同样的事情,使用运行时 - 我得到了所有的输出,我预计......最近我检查了我的输入流'in' - 它包含一些数据,但将其转换为char 失败。
  • 您看到异常了吗? “失败”是什么意思?
  • 没有例外-我只是尝试像这样打印输出: some_int=in.read(); System.out.print((char) some_int);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-15
  • 1970-01-01
  • 2016-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多