readln of InputStreamReader 不起作用



我必须使用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()和程序循环无限。

我认为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获取空

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

将读取块更改为

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

你会得到一些意见。

相关内容

  • 没有找到相关文章

最新更新