readStn的readln不起作用

时间:2013-02-08 10:44:10

标签: java netbeans vpn telnet

我必须使用java发送和接收服务器一些流。 该协议是telnet,如果我在Windows中使用cmd,使用以下命令:"telnet 10.0.1.5 9100",在"^AI202"后我有响应。

代码java:

import java.io.*;

import java.net.*;

public static void main(String[] args) throws SocketException, IOException {

    Socket s = new Socket();

    PrintWriter s_out = null;

    BufferedReader s_in = null;

    String remoteip = "10.0.1.5";

    int remoteport = 9100;

    s.connect(new InetSocketAddress(remoteip , remoteport));

    s_out = new PrintWriter( s.getOutputStream(), true);

    s_in = new BufferedReader(new InputStreamReader(s.getInputStream()));

    String message = "^AI202";

    try{

    System.out.println(s_in.readLine());

    }

    catch(Error e){

    System.out.println(e);

    }

    s_out.close();

    s_in.close();

    s.close();

}

问题是一样的:s_in调用方法readLine()和程序循环无限。

2 个答案:

答案 0 :(得分:1)

问题是telnet协议不会终止带换行符的命令。

将您的读取块更改为

  try {
    char [] cbuf = new char[7];
    System.out.println(s_in.read(cbuf, 0, cbuf.length));
  } catch(Error e){
    System.out.println(e);
  }

你会收到一些意见。

答案 1 :(得分:0)

我认为System.out.println(s_in.readLine());将尝试一遍又一遍地阅读它,每次失败并导致无限循环。

尝试

 String line ="";

 while ((line = s_in.readLine()) != null) { 

      // Do what you want to do with line.          

}

Java Socket BufferReader.readline get null