我正在爲我的java網絡考試練習一些東西,我似乎無法弄清楚這一點。 我寫了一個簡單的服務器程序,假設要問我的客戶程序一個問題,然後等待來自客戶端的回覆,然後再繼續處理答案。Java:如何檢查BufferedReder是否爲空?(包含代碼)
繼承人有點我的代碼:
//Server:
BufferedReader in = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream())
);
String answer1;
while(!in.ready()){ //wait till client replies
}
answer1 = in.readLine();
//do something with answer1
//repeat for answer 2 and so on.....
上述循環無法正常工作,服務器只運行整個程序,而無需等待答覆形成客戶端。 in.readLine()語句本身(沒有while循環)不會等待。
有沒有簡單的方法來檢查BufferedReader是否爲空或至少讓程序等待回覆?我知道我無法測試它是否爲空,因爲只要套接字連接,那不會是真的。
你的意思是「服務器只運行整個程序而不等待回覆」?你在程序中調用了'BufferedReader.readLine',你是說返回的數據是空的嗎?或者這個電話會永遠阻止,什麼也不做? – Perception
是的,如果我自己放入bufferedreader.readline(),我會得到空數據,甚至在客戶有機會回覆並轉到下一個問題之前。我假設這是正常的,因爲緩衝讀取器將始終有一些數據,並且只有在套接字之間沒有連接時纔會爲空。 –
在客戶端的答覆應該由我通過命令提示符手動完成,但我沒有機會這樣做,因爲服務器不會等待。 –