2014-11-06 46 views
-1
try { 
     Scanner inConsole = new Scanner(System.in); 
     String CONNECT_TO_WHOM = ""; 
     Socket clientEndPoint = new Socket("localhost", 9000); 
     PrintWriter out = new PrintWriter(clientEndPoint.getOutputStream(), true);     
     BufferedReader in = new BufferedReader(new InputStreamReader(clientEndPoint.getInputStream())); 

     MessageFromServerThread messageFromServer = new MessageFromServerThread(in); 
     messageFromServer.start(); 

     // Giving Client Details To whom To Connect 
     if(!in.ready()) 
     CONNECT_TO_WHOM = inConsole.nextLine(); 

     //System.out.println("You are Connecting To This " + CONNECT_TO_WHOM); 
     out.println(CONNECT_TO_WHOM); 
     //break; 

     System.out.println("To quit press q"); 
     //inConsole.nextLine(); 
     while(!clientMessage.equals("q")) { 
       out.println(clientMessage = inConsole.nextLine()); 
       //System.out.println(in.readLine()); 
     } 
     System.out.println("Check in chatClient"); 
    } catch(Exception e) { 
     e.printStackTrace(); 
    } 

代碼工作流程: 每當客戶獲取連接它的服務器,服務器將通知客戶有關的所有其他可用的客戶端,然後從客戶端,服務器期望到哪個客戶端連接。 在這裏,客戶端可能在他想與他人通信之前連接到另一個客戶端。在這種情況下,服務器會通知您已連接到客戶端X.我想通過if(!in.ready())來檢查此事件的發生。的BufferedReader`is.ready()`方法不properyly工作

我明白,in緩衝區可能很空。任何有效地做這種檢查的方法。

+0

什麼是'in'的基本輸入? 「不知道它不在我的代碼中工作」是什麼意思?你的證據證明該方法工作不正常? – EJP 2014-11-06 07:31:47

+0

現在的問題是什麼? – EJP 2014-11-06 11:22:41

+0

我想通了。謝謝。 – saikumarm 2014-11-06 16:17:28

回答

0

java.io.BufferedReader.ready()方法通知是否準備好讀取流 。當緩衝區不爲空或基礎流已準備就緒時,緩衝區字符流只能在 時就緒。

所以你的緩衝區應該是空的,使其返回false條件