Java:Bufferedreader在更新之前等待输入

时间:2014-04-21 08:15:52

标签: java sockets client-server bufferedreader

我正在编写一个小型ChatServer程序,我已经将错误确定为客户端代码的这一部分

public void run() {
    Client client = new Client();
    try {
        Socket s = new Socket("localhost", 25555);
        client.os = new DataOutputStream(s.getOutputStream());
        InputStreamReader isr = new InputStreamReader(s.getInputStream());
        BufferedReader br = new BufferedReader(isr);
        while (!exit){
            String str = Input.read_string();
            client.os.writeUTF(ID+"=CLID"+str.toLowerCase());
            client.os.flush();
            System.out.println(br.readLine());
        }
    } catch ( IOException e) {
        e.printStackTrace();
    }
}

Input.read_string()代码如下:

class Input{
  public static String read_string() {
    String read="";
    try {
      read = new BufferedReader(new InputStreamReader(System.in), 1).readLine();
    } catch (IOException ex) {
      System.out.println("error reading from the input stream!");
    }
    return read;
  }
}

当我将System.out.println(br.readLine());放在while循环的开头时,第一次另一个客户端聊天,但之后必须输入以获得下一次更新。

此外,这可以通过上一个错误修复,但是当它确实更新时,它是另一个客户端发送的最后一个错误。

0 个答案:

没有答案