2012-01-13 13 views
5

में इनकमिंग डेटा की जांच करें मैं जावा में एक साधारण चैट लिख रहा हूं, और मैं यह जांचना चाहता हूं कि BufferedReader पर कुछ डेटा इंतजार कर रहा है या नहीं। मैंने एनआईओ के बारे में पढ़ा है, लेकिन मैंने इसे पूरी तरह से समझ नहीं लिया। यहाँ मेरी कोड के कुछ है:जावा सॉकेट

public void Send(String data) 
{ 
    out.println(data); 
} 

public String Recv() 
{ 
    if (dataIncomming) 
    { 
     try { 
      return in.readLine(); 
     } catch (IOException e) { 
      System.err.println("Send: Error on BufferedReader.readLine() - IOException"); 
     } 
    } 
    else return ""; 
} 

मैं नहीं जानता कि क्या dataIncomming में भरने के लिए ...

उत्तर

7

Stream.Available() विधि का उपयोग करें। आप तब भी इंतजार करना चाहेंगे जब तक बाइट्स की सही मात्रा प्राप्त न हो और प्रतीक्षा करें ताकि थ्रेड 100% समय तक नहीं चल रहा हो।

while(Stream.Available() != 0); //block until there is data 

try{ 
    return in.readLine(); 
} catch (IOException e) { 
    System.err.println("Send: Error on BufferedReader.readLine() - IOException"); 
} 
संबंधित मुद्दे