2011-05-18 77 views
0

我想在这里做一个编程练习,使客户端和服务器与套接字一起工作。对于他们之间的通信,我使用PrintWriter和InputReader.What即插即用:如何检查是否服务器正在尝试向客户端发送什么,而客户端正在等待输入?在这一点上,客户端循环是这样的:输入问题Java插座

do { 
       outToServer.println(inFromUser.readLine()); 
       String fromServer=inFromServer.readLine(); 
       if(fromServer.equals("OK")){ 
        clientSocket.close(); 
       }else{ 
        System.out.println(fromServer); 
       } 
      } while (!clientSocket.isClosed()); 

的问题是,在某些情况下,服务器需要打印多行,之前需要输入again.Instead它打印,然后1号线生病需要输入的东西,然后另一条线来等。有没有办法解决这个问题?谢谢 。

+0

你想创建什么?你的目标是制作一个聊天应用程序吗? – doNotCheckMyBlog 2011-05-18 17:50:02

+0

没有它只是一个简单的练习是你发送命令到服务器,它做的事情。 – Giannis 2011-05-18 20:01:46

回答

0

所以你将需要封装

outToServer.readLine(); 

在while循环,有一个布尔条件类似于hasNext()函数。您可能需要将其设置如下:

String x = outToServer.readLine(); 
//while x doesn't equal whatever readLine would return if there's nothing to read 
//I'm not sure if this is a null String or not 
while(x!=null){ 
    System.out.print(x);//print it however you wish 
    String x = outToServer.readLine(); 
} 

,然后根据需要做类似的事情了inFromServer。

+0

让我知道这是否有帮助。 – Vinay 2011-05-18 18:11:09

+0

如果您使用的是BufferedReader,则流的结尾会返回空字符串,因此上述条件应该是正确的。 http://download.oracle.com/javase/1.4.2/docs/api/java/io/BufferedReader.html#readLine() – Vinay 2011-05-18 18:15:51

+0

感谢现在不好测试。 – Giannis 2011-05-18 20:01:18