【问题标题】:TelnetClient java streamTelnetClient java 流
【发布时间】:2014-07-29 04:33:55
【问题描述】:
TelnetClient telnet = new TelnetClient();
    telnet.connect( "192.168.0.6", 23 );
    PrintWriter out =
            new PrintWriter(telnet.getOutputStream(), true);

    DataInputStream in =
            new DataInputStream(telnet.getInputStream());


        BufferedReader stdIn =
            new BufferedReader(
                new InputStreamReader(System.in));

        String userInput;
        byte buffer[] = new byte[1024];
        int bytesRead;

        while ((bytesRead=in.read(buffer,0,1024)) != -1) { // read from server


            System.out.print(new String(buffer, 0, bytesRead, "UTF-8"));
            userInput = stdIn.readLine();
            if (userInput != null) {
                out.println(userInput);
                out.flush();
            }


        }
    telnet.disconnect();

您好,我在连接服务器期间遇到了这个程序的问题。 该程序应该允许我启动到服务器的 telnet 连接并向其发送一些命令并返回结果,但是当我启动连接时,它有时只返回服务器的 HELLO(欢迎使用 Microsoft Telnet 服务)而不是包括登录在内的整个消息: 当我发送命令时,这些命令的响应会延迟。 例如我写“DIR”,只有当我按两次回车时才会写响应...... 我哪里错了?请帮帮我。

【问题讨论】:

  • 你需要两个单独的线程。
  • 如果我写了一个命令然后我读了响应为什么我需要两个单独的线程?
  • 它似乎有效。我爱你。当我编写完整的代码时,我会发布它。

标签: java sockets inputstream telnet


【解决方案1】:

当尝试使用此类协议(Telnet、FTP、SSH ..)连接到网络服务时,这些协议是基于会话的协议,需要保持连接活动并与服务交互,建议使用可用的 Java API 而不是重新发明轮子(仅当您被要求不使用第三方库时),在您的情况下,您可以使用Apache Common Net,它提供了一组有用的功能来使用包括 Telnet 在内的许多网络协议连接到服务器。

【讨论】:

  • 感谢您的回复,但我只是使用 apache common net。 TelnetClient 类是其中的一部分。
  • @user3272521 我明白了,对于双击回车的问题,尝试在写入响应输出流之前设置userInput =userInput +"\r\n";
猜你喜欢
  • 2012-08-22
  • 2016-06-06
  • 1970-01-01
  • 2016-09-17
  • 2020-03-17
  • 2016-06-14
  • 2015-04-30
  • 2013-09-04
  • 2021-10-19
相关资源
最近更新 更多